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
- DynamicDataManager.cs
- ObjectDataSource.cs
- InputLanguageEventArgs.cs
- ChannelBinding.cs
- XmlSchemaCollection.cs
- XmlDocumentViewSchema.cs
- Content.cs
- ToolStripPanelRenderEventArgs.cs
- CodeNamespaceCollection.cs
- SHA1Managed.cs
- connectionpool.cs
- DbParameterCollection.cs
- MD5.cs
- EncoderNLS.cs
- UpDownBaseDesigner.cs
- ColorConverter.cs
- DataServiceQueryException.cs
- CharEnumerator.cs
- PropertyFilter.cs
- MenuItemBinding.cs
- MD5HashHelper.cs
- BehaviorEditorPart.cs
- SqlGenerator.cs
- RawStylusSystemGestureInputReport.cs
- AsyncOperation.cs
- DataServiceQueryException.cs
- SqlRowUpdatedEvent.cs
- WebScriptMetadataMessage.cs
- IconConverter.cs
- Compiler.cs
- CancellationTokenSource.cs
- GAC.cs
- SystemNetworkInterface.cs
- DbParameterHelper.cs
- FixedHyperLink.cs
- _ProxyChain.cs
- Misc.cs
- KeyPressEvent.cs
- MediaElementAutomationPeer.cs
- TaskHelper.cs
- DataGridLengthConverter.cs
- CompilerInfo.cs
- TimelineGroup.cs
- ItemChangedEventArgs.cs
- PageBreakRecord.cs
- StateValidator.cs
- MessageEnumerator.cs
- __TransparentProxy.cs
- ColorIndependentAnimationStorage.cs
- Funcletizer.cs
- ComponentFactoryHelpers.cs
- LineBreakRecord.cs
- CipherData.cs
- ResourceDescriptionAttribute.cs
- UnsafeNativeMethods.cs
- FileNotFoundException.cs
- FontDialog.cs
- AssemblyResourceLoader.cs
- DebugView.cs
- InputMethod.cs
- JsonSerializer.cs
- DataBoundControlAdapter.cs
- WindowsToolbarAsMenu.cs
- PersistenceTask.cs
- EditorPartChrome.cs
- AnnotationObservableCollection.cs
- AnchoredBlock.cs
- KeyFrames.cs
- PackagePartCollection.cs
- MainMenu.cs
- _ChunkParse.cs
- FixedDocumentPaginator.cs
- InOutArgumentConverter.cs
- MenuItemBinding.cs
- AssociationEndMember.cs
- NodeFunctions.cs
- OutOfMemoryException.cs
- UIElement3D.cs
- StylusButtonCollection.cs
- FileVersionInfo.cs
- RequestValidator.cs
- EndpointIdentityExtension.cs
- PenThreadPool.cs
- UnmanagedMemoryStream.cs
- BoolExpr.cs
- EnumType.cs
- RC2CryptoServiceProvider.cs
- NotifyCollectionChangedEventArgs.cs
- StateInitialization.cs
- BitmapEffect.cs
- ColorPalette.cs
- Columns.cs
- HandlerBase.cs
- CommandValueSerializer.cs
- CompositeFontInfo.cs
- TableNameAttribute.cs
- HorizontalAlignConverter.cs
- SHA512.cs
- TabPage.cs
- UInt32Converter.cs