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
- WebResponse.cs
- CompletedAsyncResult.cs
- HttpServerUtilityWrapper.cs
- SmiEventStream.cs
- errorpatternmatcher.cs
- DebuggerAttributes.cs
- OleDbWrapper.cs
- TaskFileService.cs
- ByteStreamGeometryContext.cs
- FontSource.cs
- DefaultValueConverter.cs
- IndexedEnumerable.cs
- cookie.cs
- HttpPostServerProtocol.cs
- IssuedTokenClientBehaviorsElementCollection.cs
- ValidateNames.cs
- ValidationSummary.cs
- CodeObjectCreateExpression.cs
- DisplayNameAttribute.cs
- OdbcConnectionFactory.cs
- XmlSchemaObjectTable.cs
- MimeTypeAttribute.cs
- TransportSecurityHelpers.cs
- userdatakeys.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- RepeaterItemEventArgs.cs
- IIS7UserPrincipal.cs
- PropertyIDSet.cs
- EntityParameterCollection.cs
- ACL.cs
- ASCIIEncoding.cs
- TimeSpanConverter.cs
- oledbconnectionstring.cs
- WebPartRestoreVerb.cs
- OdbcReferenceCollection.cs
- ToolboxControl.cs
- SelectedDatesCollection.cs
- HttpCachePolicyElement.cs
- ThreadAbortException.cs
- RichTextBox.cs
- DynamicObject.cs
- LogicalTreeHelper.cs
- SourceItem.cs
- Array.cs
- CompilationUtil.cs
- ContainerVisual.cs
- RequestQueryParser.cs
- ManagedIStream.cs
- OutOfProcStateClientManager.cs
- ServiceChannelFactory.cs
- HostVisual.cs
- CodeValidator.cs
- MDIWindowDialog.cs
- ApplicationException.cs
- OleDbEnumerator.cs
- XmlDesignerDataSourceView.cs
- UnwrappedTypesXmlSerializerManager.cs
- InvalidCommandTreeException.cs
- SqlStatistics.cs
- WindowsProgressbar.cs
- StaticTextPointer.cs
- BrowserCapabilitiesCompiler.cs
- XamlDesignerSerializationManager.cs
- DataFieldCollectionEditor.cs
- DispatcherObject.cs
- XsdSchemaFileEditor.cs
- DataTablePropertyDescriptor.cs
- MailDefinition.cs
- PhysicalAddress.cs
- QueryReaderSettings.cs
- Model3DCollection.cs
- Point.cs
- LinqExpressionNormalizer.cs
- SingleSelectRootGridEntry.cs
- UserPreference.cs
- TrackPointCollection.cs
- ObjectItemCachedAssemblyLoader.cs
- HttpValueCollection.cs
- XmlSchemaType.cs
- XmlText.cs
- SignatureHelper.cs
- WebPartUtil.cs
- ChangePassword.cs
- DATA_BLOB.cs
- AccessDataSourceView.cs
- MenuItemStyleCollection.cs
- CompilerTypeWithParams.cs
- RemotingSurrogateSelector.cs
- TextDocumentView.cs
- TextRangeBase.cs
- ObjectToModelValueConverter.cs
- VarRemapper.cs
- DataSourceControl.cs
- LongMinMaxAggregationOperator.cs
- EntryPointNotFoundException.cs
- GroupByExpressionRewriter.cs
- SettingsProperty.cs
- SessionSwitchEventArgs.cs
- ConfigPathUtility.cs
- Win32Exception.cs