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
- DetailsViewModeEventArgs.cs
- ConsumerConnectionPointCollection.cs
- HttpWriter.cs
- TraceUtils.cs
- SimpleTextLine.cs
- DependentList.cs
- ReflectionTypeLoadException.cs
- NamedPipeHostedTransportConfiguration.cs
- _ListenerAsyncResult.cs
- ComplexBindingPropertiesAttribute.cs
- UnsafeNativeMethods.cs
- TabPanel.cs
- AccessKeyManager.cs
- Int32Rect.cs
- Span.cs
- ElementFactory.cs
- ResourceKey.cs
- ProgressBarAutomationPeer.cs
- XmlnsDictionary.cs
- ExtensionDataObject.cs
- PassportAuthenticationModule.cs
- ListSourceHelper.cs
- CodeTypeMember.cs
- ListenerElementsCollection.cs
- SchemaImporterExtensionsSection.cs
- SafeMILHandle.cs
- GreenMethods.cs
- SchemaTableColumn.cs
- JsonObjectDataContract.cs
- SocketInformation.cs
- SecureStringHasher.cs
- CodeLinePragma.cs
- SkipQueryOptionExpression.cs
- DesignerLoader.cs
- AsyncCompletedEventArgs.cs
- PropertyMappingExceptionEventArgs.cs
- LockingPersistenceProvider.cs
- loginstatus.cs
- WebPartConnectionsConfigureVerb.cs
- DynamicObject.cs
- WorkflowApplicationUnloadedException.cs
- IBuiltInEvidence.cs
- CompiledRegexRunner.cs
- RawKeyboardInputReport.cs
- PolicyManager.cs
- SecureUICommand.cs
- ServiceControllerDesigner.cs
- LocationChangedEventArgs.cs
- GridViewRowEventArgs.cs
- ListenerSessionConnection.cs
- ValueCollectionParameterReader.cs
- IEnumerable.cs
- TemplatePagerField.cs
- ImportRequest.cs
- UnsafeNativeMethods.cs
- WindowsToolbar.cs
- DataGridTableCollection.cs
- RunInstallerAttribute.cs
- PreviewKeyDownEventArgs.cs
- CookielessHelper.cs
- Debug.cs
- XmlNullResolver.cs
- HostedTcpTransportManager.cs
- MessageQueuePermissionAttribute.cs
- CngUIPolicy.cs
- MetadataSerializer.cs
- DataServiceException.cs
- CollectionChangedEventManager.cs
- CodeAttributeDeclaration.cs
- ClientScriptItemCollection.cs
- PipeSecurity.cs
- XPathMultyIterator.cs
- ListMarkerLine.cs
- HostVisual.cs
- DataGridViewLinkColumn.cs
- PresentationSource.cs
- ThreadPool.cs
- DataGridViewIntLinkedList.cs
- TemplateBamlTreeBuilder.cs
- LoopExpression.cs
- RelationshipWrapper.cs
- ConnectorSelectionGlyph.cs
- DBSqlParser.cs
- DataGridRow.cs
- DataListItemCollection.cs
- KeyValueConfigurationElement.cs
- DefaultBinder.cs
- StorageAssociationSetMapping.cs
- ProfileInfo.cs
- ClientSponsor.cs
- FileLoadException.cs
- BaseComponentEditor.cs
- ExpressionEditorAttribute.cs
- AccessDataSourceView.cs
- DataListItemCollection.cs
- CodeParameterDeclarationExpression.cs
- WebPartEditorApplyVerb.cs
- WebPartEventArgs.cs
- ExpressionNormalizer.cs
- ObjectQuery.cs