Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media3D / ProjectionCamera.cs / 1305600 / 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
- CheckBoxRenderer.cs
- ImagingCache.cs
- MemoryFailPoint.cs
- PiiTraceSource.cs
- SqlCaseSimplifier.cs
- FileChangesMonitor.cs
- SimpleHandlerBuildProvider.cs
- SR.cs
- WebServiceClientProxyGenerator.cs
- EdmItemError.cs
- OleDbTransaction.cs
- Transactions.cs
- LineServices.cs
- Attributes.cs
- WindowsClaimSet.cs
- BindingList.cs
- ExpressionLink.cs
- JournalEntryListConverter.cs
- SymbolUsageManager.cs
- MimeImporter.cs
- Bidi.cs
- HMACRIPEMD160.cs
- AutoGeneratedField.cs
- ResourceContainer.cs
- TreePrinter.cs
- SafeCryptContextHandle.cs
- RemotingException.cs
- SmiRecordBuffer.cs
- TextModifierScope.cs
- UiaCoreTypesApi.cs
- LayoutDump.cs
- ZipIOLocalFileDataDescriptor.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- ServerIdentity.cs
- SiteMapHierarchicalDataSourceView.cs
- BufferAllocator.cs
- ThumbAutomationPeer.cs
- CharUnicodeInfo.cs
- TextPatternIdentifiers.cs
- ReplyChannel.cs
- SQLResource.cs
- StrongName.cs
- UpdateCommand.cs
- BodyGlyph.cs
- EndpointAddress.cs
- HttpStreamMessage.cs
- EncoderParameters.cs
- Icon.cs
- XPathNode.cs
- DictionarySectionHandler.cs
- PrintPageEvent.cs
- ContainerSelectorGlyph.cs
- IpcChannel.cs
- RecordBuilder.cs
- MessageContractAttribute.cs
- SendSecurityHeader.cs
- EventDescriptorCollection.cs
- KeyPressEvent.cs
- DynamicILGenerator.cs
- CodeAttachEventStatement.cs
- sqlinternaltransaction.cs
- SemaphoreSlim.cs
- ASCIIEncoding.cs
- LineVisual.cs
- QilParameter.cs
- SystemThemeKey.cs
- PropertyEntry.cs
- BamlLocalizabilityResolver.cs
- SafeIUnknown.cs
- TdsParameterSetter.cs
- CodeNamespaceCollection.cs
- PolicyLevel.cs
- DESCryptoServiceProvider.cs
- DbDataSourceEnumerator.cs
- InvalidOleVariantTypeException.cs
- XmlReaderDelegator.cs
- TreeViewAutomationPeer.cs
- CompensatableTransactionScopeActivityDesigner.cs
- Peer.cs
- SafeFileMapViewHandle.cs
- EventSinkHelperWriter.cs
- Operand.cs
- XsdDuration.cs
- TypeUnloadedException.cs
- NativeCppClassAttribute.cs
- IntSecurity.cs
- FindCriteriaCD1.cs
- IdnMapping.cs
- ErrorActivity.cs
- BindingMAnagerBase.cs
- AVElementHelper.cs
- TableTextElementCollectionInternal.cs
- Screen.cs
- ServiceOperation.cs
- ButtonField.cs
- OperationInvokerBehavior.cs
- Binding.cs
- DynamicDataResources.Designer.cs
- Typeface.cs
- Keyboard.cs