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
- DesignTimeTemplateParser.cs
- SQLInt32.cs
- CollectionViewProxy.cs
- ActivityWithResult.cs
- PropertyRecord.cs
- BitmapEffectDrawing.cs
- securitymgrsite.cs
- SqlCaseSimplifier.cs
- ConfigurationException.cs
- GridViewEditEventArgs.cs
- Pair.cs
- ExecutionEngineException.cs
- WebPartCatalogAddVerb.cs
- AttachedPropertiesService.cs
- CompModHelpers.cs
- GridViewDeletedEventArgs.cs
- BitmapEffectCollection.cs
- RangeContentEnumerator.cs
- GZipDecoder.cs
- SuppressMergeCheckAttribute.cs
- AsyncSerializedWorker.cs
- FtpWebResponse.cs
- Preprocessor.cs
- GeometryDrawing.cs
- ReflectionPermission.cs
- AccessDataSourceView.cs
- GlobalizationSection.cs
- DefaultTextStoreTextComposition.cs
- HttpServerVarsCollection.cs
- StreamReader.cs
- ObjectDesignerDataSourceView.cs
- WsatRegistrationHeader.cs
- PropertyStore.cs
- RijndaelCryptoServiceProvider.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- ExtenderProviderService.cs
- linebase.cs
- FrugalList.cs
- Transactions.cs
- ReceiveSecurityHeaderElementManager.cs
- KeyFrames.cs
- GridViewCancelEditEventArgs.cs
- StringCollection.cs
- Graphics.cs
- PathStreamGeometryContext.cs
- EntitySetRetriever.cs
- ClientSettingsStore.cs
- TableLayoutCellPaintEventArgs.cs
- QueryCacheKey.cs
- FileChangesMonitor.cs
- LoginName.cs
- TemplatedWizardStep.cs
- TextRunCache.cs
- XsltQilFactory.cs
- Single.cs
- BaseParser.cs
- Constraint.cs
- DefinitionBase.cs
- EdmToObjectNamespaceMap.cs
- SQLDateTime.cs
- TargetException.cs
- MessageEncoderFactory.cs
- CodeRegionDirective.cs
- FrameSecurityDescriptor.cs
- PipelineModuleStepContainer.cs
- FocusChangedEventArgs.cs
- ColorComboBox.cs
- ConfigXmlAttribute.cs
- NumberFormatInfo.cs
- ObjectContextServiceProvider.cs
- HtmlInputFile.cs
- XmlSchemaGroupRef.cs
- QilGenerator.cs
- CodeTypeDelegate.cs
- BasicHttpMessageCredentialType.cs
- FileInfo.cs
- DLinqColumnProvider.cs
- HyperlinkAutomationPeer.cs
- UrlAuthorizationModule.cs
- ApplicationDirectoryMembershipCondition.cs
- MessagePropertyVariants.cs
- SynchronizedRandom.cs
- Point4D.cs
- WindowPattern.cs
- DefaultTextStoreTextComposition.cs
- MemberBinding.cs
- Barrier.cs
- SiteMapNodeCollection.cs
- ScriptingRoleServiceSection.cs
- SearchForVirtualItemEventArgs.cs
- ComplexTypeEmitter.cs
- RoutedEventHandlerInfo.cs
- WizardDesigner.cs
- EditorZoneDesigner.cs
- Viewport2DVisual3D.cs
- ContentFilePart.cs
- TransportContext.cs
- CommentEmitter.cs
- HttpServerVarsCollection.cs
- ConfigurationStrings.cs