Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / Media3D / ProjectionCamera.cs / 1 / ProjectionCamera.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // //--------------------------------------------------------------------------- using System; namespace System.Windows.Media.Media3D { ////// The ProjectionCamera is an abstract base class from cameras /// constructed from well-understand parameers such as Position, /// LookAtPoint, and Up. /// public abstract partial class ProjectionCamera : Camera { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- ////// Prevent 3rd parties from extending this abstract base class. /// internal ProjectionCamera() { } //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- //------------------------------------------------------ // // Public Properties // //------------------------------------------------------ //----------------------------------------------------- // // Public Events // //------------------------------------------------------ //----------------------------------------------------- // // Internal Methods // //----------------------------------------------------- #region Internal Methods internal override Matrix3D GetViewMatrix() { Point3D position = Position; Vector3D lookDirection = LookDirection; Vector3D upDirection = UpDirection; return CreateViewMatrix(Transform, ref position, ref lookDirection, ref upDirection); } // Transfrom that moves the world to a camera coordinate system // where the camera is at the origin looking down the negative z // axis and y is up. // // NOTE: We consider camera.Transform to be part of the view matrix. // internal static Matrix3D CreateViewMatrix(Transform3D transform, ref Point3D position, ref Vector3D lookDirection, ref Vector3D upDirection) { Vector3D zaxis = -lookDirection; zaxis.Normalize(); Vector3D xaxis = Vector3D.CrossProduct(upDirection, zaxis); xaxis.Normalize(); Vector3D yaxis = Vector3D.CrossProduct(zaxis, xaxis); Vector3D positionVec = (Vector3D) position; double cx = -Vector3D.DotProduct(xaxis, positionVec); double cy = -Vector3D.DotProduct(yaxis, positionVec); double cz = -Vector3D.DotProduct(zaxis, positionVec); Matrix3D viewMatrix = new Matrix3D( xaxis.X, yaxis.X, zaxis.X, 0, xaxis.Y, yaxis.Y, zaxis.Y, 0, xaxis.Z, yaxis.Z, zaxis.Z, 0, cx, cy, cz, 1); PrependInverseTransform(transform, ref viewMatrix); return viewMatrix; } #endregion Internal Methods //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // //--------------------------------------------------------------------------- using System; namespace System.Windows.Media.Media3D { ////// The ProjectionCamera is an abstract base class from cameras /// constructed from well-understand parameers such as Position, /// LookAtPoint, and Up. /// public abstract partial class ProjectionCamera : Camera { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- ////// Prevent 3rd parties from extending this abstract base class. /// internal ProjectionCamera() { } //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- //------------------------------------------------------ // // Public Properties // //------------------------------------------------------ //----------------------------------------------------- // // Public Events // //------------------------------------------------------ //----------------------------------------------------- // // Internal Methods // //----------------------------------------------------- #region Internal Methods internal override Matrix3D GetViewMatrix() { Point3D position = Position; Vector3D lookDirection = LookDirection; Vector3D upDirection = UpDirection; return CreateViewMatrix(Transform, ref position, ref lookDirection, ref upDirection); } // Transfrom that moves the world to a camera coordinate system // where the camera is at the origin looking down the negative z // axis and y is up. // // NOTE: We consider camera.Transform to be part of the view matrix. // internal static Matrix3D CreateViewMatrix(Transform3D transform, ref Point3D position, ref Vector3D lookDirection, ref Vector3D upDirection) { Vector3D zaxis = -lookDirection; zaxis.Normalize(); Vector3D xaxis = Vector3D.CrossProduct(upDirection, zaxis); xaxis.Normalize(); Vector3D yaxis = Vector3D.CrossProduct(zaxis, xaxis); Vector3D positionVec = (Vector3D) position; double cx = -Vector3D.DotProduct(xaxis, positionVec); double cy = -Vector3D.DotProduct(yaxis, positionVec); double cz = -Vector3D.DotProduct(zaxis, positionVec); Matrix3D viewMatrix = new Matrix3D( xaxis.X, yaxis.X, zaxis.X, 0, xaxis.Y, yaxis.Y, zaxis.Y, 0, xaxis.Z, yaxis.Z, zaxis.Z, 0, cx, cy, cz, 1); PrependInverseTransform(transform, ref viewMatrix); return viewMatrix; } #endregion Internal Methods //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AttributeData.cs
- XmlName.cs
- BaseCAMarshaler.cs
- InternalCache.cs
- OpenTypeLayoutCache.cs
- StringComparer.cs
- SynchronizedInputAdaptor.cs
- HwndSourceKeyboardInputSite.cs
- XmlSchemaSimpleContentRestriction.cs
- OleDbMetaDataFactory.cs
- TypographyProperties.cs
- ExpressionEditor.cs
- XmlSchemaSimpleTypeUnion.cs
- DrawingContextWalker.cs
- DesignParameter.cs
- PKCS1MaskGenerationMethod.cs
- XhtmlConformanceSection.cs
- WebPartConnectionsDisconnectVerb.cs
- EraserBehavior.cs
- Util.cs
- OrCondition.cs
- ParserContext.cs
- TypedOperationInfo.cs
- XmlNamespaceDeclarationsAttribute.cs
- DataServiceClientException.cs
- SqlFactory.cs
- ExternalDataExchangeService.cs
- AssemblyResolver.cs
- StructuralType.cs
- PropertyEmitter.cs
- Base64Decoder.cs
- OutOfMemoryException.cs
- EventLogSession.cs
- SymDocumentType.cs
- DelegateSerializationHolder.cs
- WSFederationHttpSecurityMode.cs
- DataMisalignedException.cs
- hebrewshape.cs
- SiteMapNodeCollection.cs
- connectionpool.cs
- HttpWebRequestElement.cs
- MultipartIdentifier.cs
- TypeForwardedToAttribute.cs
- OracleFactory.cs
- TextDocumentView.cs
- RecognizeCompletedEventArgs.cs
- GridItemCollection.cs
- ThreadPool.cs
- TypeConverterHelper.cs
- ToggleButtonAutomationPeer.cs
- DetailsViewInsertEventArgs.cs
- SecurityUtils.cs
- RSAPKCS1SignatureFormatter.cs
- Deserializer.cs
- ListItemCollection.cs
- IDReferencePropertyAttribute.cs
- PropertyDescriptor.cs
- IDReferencePropertyAttribute.cs
- XmlFormatExtensionPrefixAttribute.cs
- TextParagraph.cs
- MarkupObject.cs
- MessageBodyDescription.cs
- PixelFormats.cs
- ModelItemExtensions.cs
- SerializerWriterEventHandlers.cs
- XmlQuerySequence.cs
- InvalidEnumArgumentException.cs
- ResourceIDHelper.cs
- ProcessInfo.cs
- EventManager.cs
- SQLDoubleStorage.cs
- xmlsaver.cs
- CompareInfo.cs
- RealProxy.cs
- CacheOutputQuery.cs
- CompositeCollection.cs
- ThemeDirectoryCompiler.cs
- PageAsyncTask.cs
- BinHexEncoder.cs
- XsltFunctions.cs
- SimpleLine.cs
- CompilerLocalReference.cs
- DataGridViewColumnConverter.cs
- EventlogProvider.cs
- AsyncCompletedEventArgs.cs
- SQlBooleanStorage.cs
- HtmlInputPassword.cs
- TextEditorMouse.cs
- LeaseManager.cs
- MsmqIntegrationInputChannel.cs
- StringAttributeCollection.cs
- FieldAccessException.cs
- Rotation3DAnimationBase.cs
- ObjectStateFormatter.cs
- MarkupProperty.cs
- DbExpressionRules.cs
- Animatable.cs
- FontFamily.cs
- GeneralTransform3D.cs
- SafeArrayTypeMismatchException.cs