Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CursorInteropHelper.cs
- CodeSnippetCompileUnit.cs
- MeasureItemEvent.cs
- Grant.cs
- CultureTableRecord.cs
- AQNBuilder.cs
- ItemsControl.cs
- DocumentPageView.cs
- WmlFormAdapter.cs
- XmlLoader.cs
- ObjectListCommandsPage.cs
- SmtpMail.cs
- TrimSurroundingWhitespaceAttribute.cs
- TextFormatter.cs
- SerializationInfoEnumerator.cs
- ObjectNotFoundException.cs
- XslAst.cs
- UserControlParser.cs
- TableLayout.cs
- LayoutUtils.cs
- PageTheme.cs
- XmlResolver.cs
- NavigationService.cs
- CodeSnippetTypeMember.cs
- Baml2006ReaderFrame.cs
- StructuralObject.cs
- RelatedView.cs
- FlatButtonAppearance.cs
- EntityClassGenerator.cs
- UserControlParser.cs
- CompositeScriptReferenceEventArgs.cs
- ObjectDataSourceEventArgs.cs
- FixedDocument.cs
- URLAttribute.cs
- TargetControlTypeCache.cs
- CheckedListBox.cs
- Int32RectConverter.cs
- LoadedOrUnloadedOperation.cs
- DbConnectionStringCommon.cs
- DataSourceSelectArguments.cs
- _ListenerRequestStream.cs
- CodeMemberProperty.cs
- EntityDataSourceContextCreatingEventArgs.cs
- DocumentationServerProtocol.cs
- Variant.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- CompilationUtil.cs
- ForeignConstraint.cs
- AtomMaterializerLog.cs
- SHA512Managed.cs
- Thumb.cs
- WCFServiceClientProxyGenerator.cs
- MeasureItemEvent.cs
- LayoutEditorPart.cs
- XPathBinder.cs
- PermissionSetTriple.cs
- Directory.cs
- InvalidDataException.cs
- DbTypeMap.cs
- SqlReferenceCollection.cs
- followingquery.cs
- MetadataUtilsSmi.cs
- PathBox.cs
- ProviderSettings.cs
- DataSet.cs
- DesignerTransactionCloseEvent.cs
- OSFeature.cs
- Win32Exception.cs
- HtmlInputButton.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- HttpCapabilitiesBase.cs
- MailMessageEventArgs.cs
- RequestBringIntoViewEventArgs.cs
- UnicodeEncoding.cs
- PhysicalAddress.cs
- StrongNameIdentityPermission.cs
- TripleDESCryptoServiceProvider.cs
- BamlRecordWriter.cs
- StatusBarAutomationPeer.cs
- CreateUserErrorEventArgs.cs
- MailAddressParser.cs
- ToolStripScrollButton.cs
- Crc32.cs
- PointF.cs
- StronglyTypedResourceBuilder.cs
- BamlLocalizableResourceKey.cs
- BamlTreeUpdater.cs
- ThreadPool.cs
- ListViewTableCell.cs
- WindowsTokenRoleProvider.cs
- WorkflowOwnerAsyncResult.cs
- PropertyValueChangedEvent.cs
- propertytag.cs
- Preprocessor.cs
- Metafile.cs
- InternalControlCollection.cs
- IPAddressCollection.cs
- StopRoutingHandler.cs
- RoutingSection.cs
- HyperLinkStyle.cs