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
- HuffCodec.cs
- UriTemplateTrieNode.cs
- InvokeWebService.cs
- DoubleAnimationUsingKeyFrames.cs
- LineProperties.cs
- TypeSemantics.cs
- WorkflowDesigner.cs
- DataGridSortCommandEventArgs.cs
- IgnoreFlushAndCloseStream.cs
- XmlNamespaceMappingCollection.cs
- Stackframe.cs
- AspCompat.cs
- FormViewDeletedEventArgs.cs
- ProcessHost.cs
- SwitchLevelAttribute.cs
- PersonalizableTypeEntry.cs
- Pair.cs
- ContractSearchPattern.cs
- SecurityState.cs
- ImportContext.cs
- SqlDataSourceCommandEventArgs.cs
- ModelPerspective.cs
- CalculatedColumn.cs
- Directory.cs
- ErrorWrapper.cs
- XmlSchemaObjectTable.cs
- MDIClient.cs
- FacetDescription.cs
- ConstraintEnumerator.cs
- PhonemeConverter.cs
- GB18030Encoding.cs
- DataSourceGeneratorException.cs
- SignatureToken.cs
- DataGridHeaderBorder.cs
- BuildResult.cs
- ExternalException.cs
- HtmlControlPersistable.cs
- PlanCompiler.cs
- SmtpReplyReader.cs
- _RequestLifetimeSetter.cs
- CheckBox.cs
- PromptBuilder.cs
- ResourceProviderFactory.cs
- InsufficientExecutionStackException.cs
- RawStylusInputCustomData.cs
- ToolStripDesignerAvailabilityAttribute.cs
- RemoteWebConfigurationHostServer.cs
- ListItem.cs
- MessageSecurityOverTcpElement.cs
- ThemeDictionaryExtension.cs
- RemotingConfigParser.cs
- SignedXml.cs
- WsatServiceAddress.cs
- GeneralTransformCollection.cs
- BitmapFrameEncode.cs
- CodeAttributeDeclarationCollection.cs
- DbDataRecord.cs
- smtpconnection.cs
- DesignerView.cs
- OrElse.cs
- DataGridViewCellStyle.cs
- DatagridviewDisplayedBandsData.cs
- Tool.cs
- RowBinding.cs
- CodeIdentifier.cs
- Cell.cs
- ContainerTracking.cs
- MenuBase.cs
- UInt64Storage.cs
- UpdatePanelTrigger.cs
- CompiledIdentityConstraint.cs
- EntitySqlQueryCacheKey.cs
- CqlErrorHelper.cs
- ThemeDirectoryCompiler.cs
- IntSecurity.cs
- HandleTable.cs
- RequestCachingSection.cs
- HandlerFactoryWrapper.cs
- AbandonedMutexException.cs
- xmlsaver.cs
- ScrollProviderWrapper.cs
- Ipv6Element.cs
- InternalConfigConfigurationFactory.cs
- GeneralTransform3D.cs
- RepeatBehaviorConverter.cs
- ObjectSecurity.cs
- TypographyProperties.cs
- InlinedLocationReference.cs
- FormCollection.cs
- XmlILModule.cs
- SplitterEvent.cs
- IntSecurity.cs
- SqlProviderUtilities.cs
- ErrorReporting.cs
- AttributeCollection.cs
- XMLUtil.cs
- WebPartConnectionsConfigureVerb.cs
- DoWorkEventArgs.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- TypeTypeConverter.cs