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
- XmlSchemaAttributeGroup.cs
- Size3DConverter.cs
- CacheModeConverter.cs
- PreviewPrintController.cs
- SerTrace.cs
- XPathNavigatorKeyComparer.cs
- ThemeDirectoryCompiler.cs
- GregorianCalendar.cs
- PropertyChangedEventManager.cs
- ButtonColumn.cs
- LayoutEditorPart.cs
- ButtonFlatAdapter.cs
- clipboard.cs
- RelationshipWrapper.cs
- FragmentQueryKB.cs
- BlurEffect.cs
- RemoteWebConfigurationHost.cs
- SoapElementAttribute.cs
- ExecutedRoutedEventArgs.cs
- ZeroOpNode.cs
- HealthMonitoringSectionHelper.cs
- SharedStatics.cs
- SqlCommandBuilder.cs
- EditorReuseAttribute.cs
- RegexWorker.cs
- CodeArgumentReferenceExpression.cs
- BitHelper.cs
- SerializationStore.cs
- ApplicationException.cs
- Path.cs
- storepermission.cs
- WebPartConnectionsDisconnectVerb.cs
- PromptEventArgs.cs
- GridViewRowCollection.cs
- IDReferencePropertyAttribute.cs
- ManagementDateTime.cs
- HotSpot.cs
- BezierSegment.cs
- OutputCacheProfile.cs
- TextEmbeddedObject.cs
- _CacheStreams.cs
- MenuItemBinding.cs
- SegmentInfo.cs
- FormViewInsertedEventArgs.cs
- DataRelationCollection.cs
- FunctionMappingTranslator.cs
- OperandQuery.cs
- MethodBody.cs
- SwitchAttribute.cs
- FreezableOperations.cs
- DBCommand.cs
- EndOfStreamException.cs
- GradientStop.cs
- EpmCustomContentDeSerializer.cs
- DeviceSpecific.cs
- JpegBitmapEncoder.cs
- ComponentResourceManager.cs
- ClientOptions.cs
- HtmlInputFile.cs
- HttpValueCollection.cs
- DockAndAnchorLayout.cs
- ExceptionRoutedEventArgs.cs
- CanonicalFormWriter.cs
- SchemaMerger.cs
- RegistryDataKey.cs
- PointAnimationUsingPath.cs
- ListViewGroup.cs
- XmlDeclaration.cs
- URLAttribute.cs
- smtppermission.cs
- GridViewDeletedEventArgs.cs
- ArrayList.cs
- ImageMap.cs
- CatalogZone.cs
- DNS.cs
- LessThanOrEqual.cs
- IsolatedStorageFileStream.cs
- TiffBitmapDecoder.cs
- ResourceExpressionBuilder.cs
- CallbackValidatorAttribute.cs
- SystemInfo.cs
- DesignTimeDataBinding.cs
- ActiveXHelper.cs
- TabItem.cs
- AnimationClock.cs
- Graph.cs
- XmlBinaryReader.cs
- DesignTimeXamlWriter.cs
- SetStateDesigner.cs
- GroupBoxDesigner.cs
- TreeViewImageIndexConverter.cs
- XmlDeclaration.cs
- XmlSchemaExternal.cs
- XMLDiffLoader.cs
- EnumType.cs
- ServiceOperationParameter.cs
- Calendar.cs
- SiteMapDataSourceView.cs
- ProcessManager.cs
- BitmapMetadataEnumerator.cs