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
- MediaSystem.cs
- HwndSubclass.cs
- _SpnDictionary.cs
- InvariantComparer.cs
- EntityDataSourceStatementEditorForm.cs
- Queue.cs
- OwnerDrawPropertyBag.cs
- FrugalMap.cs
- TableItemProviderWrapper.cs
- RoutedPropertyChangedEventArgs.cs
- XmlFormatWriterGenerator.cs
- XXXOnTypeBuilderInstantiation.cs
- DataGridSortingEventArgs.cs
- PropertyIDSet.cs
- PackUriHelper.cs
- LabelAutomationPeer.cs
- TypeConverterBase.cs
- SchemaInfo.cs
- PackWebRequestFactory.cs
- UserControlCodeDomTreeGenerator.cs
- WorkflowDesigner.cs
- GuidelineSet.cs
- NavigatorInput.cs
- WindowsIdentity.cs
- ScriptServiceAttribute.cs
- EdmMember.cs
- ProxyGenerationError.cs
- WindowsListViewItemStartMenu.cs
- DataGridTable.cs
- Point.cs
- ConfigurationElement.cs
- CompositeScriptReference.cs
- SingleBodyParameterMessageFormatter.cs
- XpsManager.cs
- FontStretches.cs
- ProviderException.cs
- ServicePointManagerElement.cs
- FlowDocumentPaginator.cs
- ObjRef.cs
- Property.cs
- ImageMapEventArgs.cs
- WindowsStatic.cs
- OleAutBinder.cs
- HtmlTernaryTree.cs
- OdbcConnection.cs
- MetadataItemEmitter.cs
- SamlAudienceRestrictionCondition.cs
- KeyValueInternalCollection.cs
- SHA256Managed.cs
- SystemMulticastIPAddressInformation.cs
- CollectionDataContract.cs
- AutoResetEvent.cs
- HostedTransportConfigurationManager.cs
- TransformCollection.cs
- HttpStreamMessageEncoderFactory.cs
- UriTemplateVariableQueryValue.cs
- PrivilegeNotHeldException.cs
- BamlBinaryReader.cs
- TypeTypeConverter.cs
- RSATokenProvider.cs
- CodeTypeDeclarationCollection.cs
- TableLayoutPanelCellPosition.cs
- GridLengthConverter.cs
- XPathAncestorQuery.cs
- TreeNodeMouseHoverEvent.cs
- SelectionWordBreaker.cs
- infer.cs
- WebPartMinimizeVerb.cs
- HotCommands.cs
- ServiceOperationListItem.cs
- SafeSecurityHandles.cs
- ElementsClipboardData.cs
- TextDecorations.cs
- PolygonHotSpot.cs
- SQLRoleProvider.cs
- ComPlusSynchronizationContext.cs
- OdbcEnvironment.cs
- TextSerializer.cs
- AssertFilter.cs
- DEREncoding.cs
- EntityDataReader.cs
- RtType.cs
- SqlUserDefinedTypeAttribute.cs
- Margins.cs
- TransactionInformation.cs
- NameValueConfigurationCollection.cs
- Crc32Helper.cs
- ToolStripSeparator.cs
- IntegrationExceptionEventArgs.cs
- TransformDescriptor.cs
- Journal.cs
- StdRegProviderWrapper.cs
- NetNamedPipeBindingElement.cs
- RegistryKey.cs
- SuppressMergeCheckAttribute.cs
- SQLBinary.cs
- StringUtil.cs
- MessageHeaderAttribute.cs
- DefaultHttpHandler.cs
- ExtensionWindow.cs