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
- XmlSchemaImport.cs
- EncryptedType.cs
- JournalEntryListConverter.cs
- ArithmeticException.cs
- TextElementEnumerator.cs
- IOThreadTimer.cs
- DocumentXmlWriter.cs
- Configuration.cs
- MethodMessage.cs
- AesCryptoServiceProvider.cs
- HwndSourceKeyboardInputSite.cs
- NativeMethodsCLR.cs
- Rotation3DAnimation.cs
- DataObjectMethodAttribute.cs
- SystemColors.cs
- HostingEnvironment.cs
- DBConnectionString.cs
- ImageDrawing.cs
- PageCopyCount.cs
- StorageModelBuildProvider.cs
- FileSecurity.cs
- storepermission.cs
- ConstrainedGroup.cs
- WindowsFormsEditorServiceHelper.cs
- PerformanceCountersElement.cs
- DoubleUtil.cs
- MailMessageEventArgs.cs
- DoubleLinkListEnumerator.cs
- WebPartEditorOkVerb.cs
- XomlCompilerError.cs
- XNameConverter.cs
- SqlClientPermission.cs
- ExpressionVisitorHelpers.cs
- SQLCharsStorage.cs
- AnnotationResourceChangedEventArgs.cs
- VisualStateManager.cs
- AppDomainAttributes.cs
- Section.cs
- OleDbConnection.cs
- RuleSettingsCollection.cs
- WorkflowRuntimeBehavior.cs
- JapaneseCalendar.cs
- ColorConvertedBitmapExtension.cs
- SystemIPGlobalStatistics.cs
- XmlSchemaAnnotated.cs
- XmlSchemaSearchPattern.cs
- CatalogPartChrome.cs
- ValueConversionAttribute.cs
- SignatureResourcePool.cs
- PeerObject.cs
- WebPartAuthorizationEventArgs.cs
- ToolStripDropDownItemDesigner.cs
- ConnectorSelectionGlyph.cs
- RuntimeHelpers.cs
- TextSearch.cs
- FileAuthorizationModule.cs
- PageCatalogPart.cs
- MenuCommandsChangedEventArgs.cs
- CodeSnippetTypeMember.cs
- Maps.cs
- MdiWindowListItemConverter.cs
- ResourceProperty.cs
- ArrayElementGridEntry.cs
- SessionState.cs
- HttpRequestTraceRecord.cs
- ErrorProvider.cs
- MasterPageParser.cs
- ReachFixedPageSerializerAsync.cs
- OracleParameterBinding.cs
- DecoderNLS.cs
- XmlSchemaCollection.cs
- SortedSetDebugView.cs
- FontSourceCollection.cs
- ClientApiGenerator.cs
- ControllableStoryboardAction.cs
- ThicknessAnimationUsingKeyFrames.cs
- Hex.cs
- ErrorEventArgs.cs
- BufferAllocator.cs
- PasswordBox.cs
- TypedReference.cs
- CodeDelegateCreateExpression.cs
- ClockGroup.cs
- SafeCryptContextHandle.cs
- PrimitiveCodeDomSerializer.cs
- CommonDialog.cs
- TreeViewImageKeyConverter.cs
- SessionParameter.cs
- CheckBoxAutomationPeer.cs
- LayoutTableCell.cs
- mediaeventshelper.cs
- EnvironmentPermission.cs
- MulticastIPAddressInformationCollection.cs
- SecurityTokenAttachmentMode.cs
- ReliableReplySessionChannel.cs
- TypeGeneratedEventArgs.cs
- StatusBarPanel.cs
- XmlDocumentType.cs
- AddInBase.cs
- ButtonChrome.cs