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
- CultureTable.cs
- TableCell.cs
- ParameterSubsegment.cs
- EnumType.cs
- ConfigurationValues.cs
- DocumentViewerBaseAutomationPeer.cs
- FromReply.cs
- XmlElementCollection.cs
- MailSettingsSection.cs
- CompilerErrorCollection.cs
- GC.cs
- RSAOAEPKeyExchangeDeformatter.cs
- BindingOperations.cs
- CFGGrammar.cs
- AudienceUriMode.cs
- HierarchicalDataBoundControl.cs
- AutomationProperty.cs
- RedistVersionInfo.cs
- EntityClientCacheKey.cs
- ToolStripTextBox.cs
- ModelUIElement3D.cs
- TextPattern.cs
- ToolStripContentPanel.cs
- EncoderReplacementFallback.cs
- LocalValueEnumerator.cs
- WsdlParser.cs
- OracleBFile.cs
- DeviceContext2.cs
- ReadOnlyDataSource.cs
- CfgParser.cs
- SqlConnectionManager.cs
- SqlMultiplexer.cs
- SystemInfo.cs
- PageFunction.cs
- ReflectionTypeLoadException.cs
- EdmProviderManifest.cs
- WindowsAuthenticationEventArgs.cs
- FilteredSchemaElementLookUpTable.cs
- MimeObjectFactory.cs
- JsonXmlDataContract.cs
- Popup.cs
- TreePrinter.cs
- wgx_sdk_version.cs
- CodePropertyReferenceExpression.cs
- InputLanguageSource.cs
- coordinator.cs
- XMLDiffLoader.cs
- SupportingTokenDuplexChannel.cs
- DynamicDataExtensions.cs
- StringFormat.cs
- WebPartVerb.cs
- DrawListViewSubItemEventArgs.cs
- DbProviderServices.cs
- StaticSiteMapProvider.cs
- SafeEventHandle.cs
- MetadataFile.cs
- BindingWorker.cs
- TerminatorSinks.cs
- PiiTraceSource.cs
- ExpandedWrapper.cs
- DbConnectionInternal.cs
- CompModSwitches.cs
- GregorianCalendar.cs
- Point3DAnimationUsingKeyFrames.cs
- ListParagraph.cs
- COM2PictureConverter.cs
- IgnoreFlushAndCloseStream.cs
- ArithmeticException.cs
- IList.cs
- ComNativeDescriptor.cs
- ThreadSafeList.cs
- ChangeDirector.cs
- UniqueConstraint.cs
- TransformDescriptor.cs
- ConfigXmlAttribute.cs
- EditingScope.cs
- ContainerUtilities.cs
- TimerElapsedEvenArgs.cs
- ProfileInfo.cs
- FixedSOMPage.cs
- Constants.cs
- SplineKeyFrames.cs
- KeyboardDevice.cs
- LockCookie.cs
- SqlReferenceCollection.cs
- FlowDocumentReader.cs
- DataGridCellsPresenter.cs
- WriteFileContext.cs
- DataTemplate.cs
- PanelStyle.cs
- PeerNameResolver.cs
- DataRelation.cs
- CorrelationResolver.cs
- StylusButtonCollection.cs
- OdbcInfoMessageEvent.cs
- DockAndAnchorLayout.cs
- ProtocolsInstallComponent.cs
- WindowsMenu.cs
- CategoryList.cs
- DrawListViewItemEventArgs.cs