Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- OutOfProcStateClientManager.cs
- StrokeFIndices.cs
- Exception.cs
- WindowShowOrOpenTracker.cs
- ExpandedWrapper.cs
- AssemblyResourceLoader.cs
- MouseDevice.cs
- Console.cs
- ObjRef.cs
- SchemaHelper.cs
- DBCommand.cs
- GridViewAutomationPeer.cs
- Simplifier.cs
- ControlEvent.cs
- ConnectionPoint.cs
- TextBoxRenderer.cs
- PropertiesTab.cs
- EmissiveMaterial.cs
- GroupBoxRenderer.cs
- TextEditorSelection.cs
- IODescriptionAttribute.cs
- FontDialog.cs
- TileBrush.cs
- ADMembershipUser.cs
- DrawingImage.cs
- ScriptMethodAttribute.cs
- LoggedException.cs
- ImplicitInputBrush.cs
- GridViewColumnHeaderAutomationPeer.cs
- SqlParameterCollection.cs
- DownloadProgressEventArgs.cs
- CharacterBufferReference.cs
- TagPrefixCollection.cs
- ValidationErrorCollection.cs
- DbModificationClause.cs
- SecurityState.cs
- _MultipleConnectAsync.cs
- ExtenderProviderService.cs
- ScriptingAuthenticationServiceSection.cs
- CommandBindingCollection.cs
- BamlResourceContent.cs
- DocumentCollection.cs
- MergeFailedEvent.cs
- TextTreeDeleteContentUndoUnit.cs
- WindowsAuthenticationEventArgs.cs
- SafeCryptHandles.cs
- TableCellAutomationPeer.cs
- CodeSubDirectoriesCollection.cs
- GetIsBrowserClientRequest.cs
- WebPartDeleteVerb.cs
- ThrowHelper.cs
- CounterNameConverter.cs
- HideDisabledControlAdapter.cs
- FormsAuthenticationEventArgs.cs
- OleDbParameterCollection.cs
- XamlPoint3DCollectionSerializer.cs
- PerfCounters.cs
- StandardMenuStripVerb.cs
- GridItemPattern.cs
- ObjectTag.cs
- WebPartRestoreVerb.cs
- ApplicationBuildProvider.cs
- Ticks.cs
- GACMembershipCondition.cs
- MergeFilterQuery.cs
- RawAppCommandInputReport.cs
- IPEndPoint.cs
- WorkflowCompensationBehavior.cs
- TableRow.cs
- BitVector32.cs
- OutputCacheProfile.cs
- Exception.cs
- TimeZone.cs
- odbcmetadatafactory.cs
- CategoryGridEntry.cs
- TailPinnedEventArgs.cs
- ModulesEntry.cs
- CreationContext.cs
- ReadWriteSpinLock.cs
- XPathAncestorQuery.cs
- TransformCryptoHandle.cs
- HeaderUtility.cs
- GlobalEventManager.cs
- PartitionResolver.cs
- CompilationUtil.cs
- IconHelper.cs
- CallbackHandler.cs
- OperationResponse.cs
- OleDbCommand.cs
- ProfileService.cs
- SmiContext.cs
- ValueTypeFixupInfo.cs
- FromRequest.cs
- StringExpressionSet.cs
- SafeRightsManagementEnvironmentHandle.cs
- AnchoredBlock.cs
- PlatformNotSupportedException.cs
- DataListDesigner.cs
- PageCache.cs
- ChtmlSelectionListAdapter.cs