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
- OleDbParameterCollection.cs
- Int32RectConverter.cs
- ControlBindingsCollection.cs
- DataGridAddNewRow.cs
- CompilerHelpers.cs
- ClrProviderManifest.cs
- ServerTooBusyException.cs
- WebPartMinimizeVerb.cs
- ResourceDisplayNameAttribute.cs
- RoleGroup.cs
- MediaContext.cs
- FirstMatchCodeGroup.cs
- ReplyAdapterChannelListener.cs
- XmlSerializerVersionAttribute.cs
- XmlCharacterData.cs
- GlyphingCache.cs
- Int32Animation.cs
- MessageEnumerator.cs
- HwndProxyElementProvider.cs
- Vector.cs
- SQLStringStorage.cs
- GradientStop.cs
- ReadOnlyCollectionBase.cs
- ScriptReference.cs
- IncrementalCompileAnalyzer.cs
- Stroke.cs
- HostedNamedPipeTransportManager.cs
- UnmanagedMarshal.cs
- PageThemeBuildProvider.cs
- MLangCodePageEncoding.cs
- _CookieModule.cs
- RoleService.cs
- Clipboard.cs
- ParseNumbers.cs
- ScrollChrome.cs
- ReadOnlyObservableCollection.cs
- SchemaSetCompiler.cs
- BaseTransportHeaders.cs
- EndOfStreamException.cs
- DataKeyArray.cs
- ClientSettingsProvider.cs
- AttachmentCollection.cs
- WebPartConnectionsCancelEventArgs.cs
- NumberFormatInfo.cs
- WebResponse.cs
- MemoryMappedFile.cs
- IssuedTokensHeader.cs
- ServiceDefaults.cs
- COM2ColorConverter.cs
- RoutedCommand.cs
- EventRecordWrittenEventArgs.cs
- DockPattern.cs
- AssemblyCache.cs
- TextStore.cs
- GregorianCalendar.cs
- ParentQuery.cs
- XmlDocumentType.cs
- TimeSpanMinutesConverter.cs
- ProcessHostServerConfig.cs
- CellCreator.cs
- UInt64Storage.cs
- FontDriver.cs
- Line.cs
- mansign.cs
- DoubleCollectionValueSerializer.cs
- ComboBoxHelper.cs
- TypeSystem.cs
- WebPartManagerInternals.cs
- Helpers.cs
- LinearKeyFrames.cs
- DataTrigger.cs
- JsonEncodingStreamWrapper.cs
- ErrorWrapper.cs
- StrongNamePublicKeyBlob.cs
- RequestSecurityTokenResponse.cs
- StylusPointPropertyUnit.cs
- EmbeddedMailObject.cs
- _NegoStream.cs
- BitConverter.cs
- SelectQueryOperator.cs
- AssemblyCache.cs
- ReversePositionQuery.cs
- StringFunctions.cs
- PermissionAttributes.cs
- XmlHelper.cs
- FileUtil.cs
- MachineSettingsSection.cs
- CaseInsensitiveHashCodeProvider.cs
- SyndicationContent.cs
- AuthenticationService.cs
- CommandManager.cs
- PagesChangedEventArgs.cs
- MultiPropertyDescriptorGridEntry.cs
- TextSimpleMarkerProperties.cs
- BitmapMetadataEnumerator.cs
- MultiAsyncResult.cs
- BuilderPropertyEntry.cs
- TextDecorationLocationValidation.cs
- BinaryFormatter.cs
- EventTrigger.cs