Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- DetailsViewUpdatedEventArgs.cs
- AddInServer.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- ScriptBehaviorDescriptor.cs
- ClrProviderManifest.cs
- ChannelTerminatedException.cs
- DependencyObjectPropertyDescriptor.cs
- X509ChainElement.cs
- XslAst.cs
- RelationshipEndMember.cs
- InternalResources.cs
- FamilyTypeface.cs
- ToolboxItemCollection.cs
- FixedSOMLineRanges.cs
- ValuePattern.cs
- CrossAppDomainChannel.cs
- HtmlForm.cs
- StringComparer.cs
- WindowsFormsSectionHandler.cs
- HierarchicalDataSourceDesigner.cs
- listitem.cs
- DataColumnMappingCollection.cs
- MatrixCamera.cs
- Geometry.cs
- ImageSourceValueSerializer.cs
- XmlUrlResolver.cs
- XamlTemplateSerializer.cs
- Point3DValueSerializer.cs
- BitmapFrameDecode.cs
- SqlBulkCopy.cs
- InternalResources.cs
- KeyToListMap.cs
- TextRunCacheImp.cs
- ToolStripMenuItem.cs
- KeyGestureConverter.cs
- TemplatePagerField.cs
- ResetableIterator.cs
- ExpressionCopier.cs
- GeometryHitTestResult.cs
- HMACSHA1.cs
- MessageBox.cs
- XmlAutoDetectWriter.cs
- IncomingWebResponseContext.cs
- WindowsTitleBar.cs
- HTTPNotFoundHandler.cs
- JoinGraph.cs
- StoreContentChangedEventArgs.cs
- OracleCommandSet.cs
- ConditionChanges.cs
- Primitive.cs
- TypeDefinition.cs
- IssuanceLicense.cs
- ActivitySurrogate.cs
- TransformProviderWrapper.cs
- WebSysDescriptionAttribute.cs
- DirectoryNotFoundException.cs
- ListControl.cs
- UnionExpr.cs
- SecurityProtocolFactory.cs
- OracleRowUpdatedEventArgs.cs
- CustomValidator.cs
- IdentityManager.cs
- GZipDecoder.cs
- WebPartTransformer.cs
- TrackBar.cs
- _AutoWebProxyScriptWrapper.cs
- CacheEntry.cs
- FormClosingEvent.cs
- ValueSerializerAttribute.cs
- PixelFormat.cs
- VisualBasic.cs
- GridViewRowEventArgs.cs
- CategoryEditor.cs
- PathFigure.cs
- MetabaseServerConfig.cs
- Boolean.cs
- ThreadStaticAttribute.cs
- XmlSchemas.cs
- SqlClientFactory.cs
- CompilerScope.Storage.cs
- Matrix.cs
- TextClipboardData.cs
- XmlNodeChangedEventArgs.cs
- Polygon.cs
- DeclarativeCatalogPart.cs
- OdbcConnectionStringbuilder.cs
- PageRequestManager.cs
- Part.cs
- InputScopeNameConverter.cs
- TemplateColumn.cs
- InertiaTranslationBehavior.cs
- WorkerRequest.cs
- ToolStripOverflow.cs
- CodeSnippetCompileUnit.cs
- Logging.cs
- PeerEndPoint.cs
- DocumentApplicationJournalEntry.cs
- IIS7UserPrincipal.cs
- OdbcPermission.cs
- ServiceMetadataExtension.cs