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
- LaxModeSecurityHeaderElementInferenceEngine.cs
- ReadWriteObjectLock.cs
- DesignerAdapterAttribute.cs
- ProgressPage.cs
- DateRangeEvent.cs
- SchemaTableOptionalColumn.cs
- xmlglyphRunInfo.cs
- IgnorePropertiesAttribute.cs
- FileRegion.cs
- PopupEventArgs.cs
- GatewayIPAddressInformationCollection.cs
- SqlProcedureAttribute.cs
- XmlMemberMapping.cs
- TCPListener.cs
- OperandQuery.cs
- TypeElementCollection.cs
- Renderer.cs
- EarlyBoundInfo.cs
- SpecularMaterial.cs
- XmlReturnReader.cs
- validationstate.cs
- LocationSectionRecord.cs
- XpsTokenContext.cs
- DefaultEventAttribute.cs
- GrammarBuilderBase.cs
- SqlClientFactory.cs
- DataGridViewLinkColumn.cs
- ChildrenQuery.cs
- SizeLimitedCache.cs
- ObjectDesignerDataSourceView.cs
- ToolboxComponentsCreatingEventArgs.cs
- XmlLinkedNode.cs
- XmlIgnoreAttribute.cs
- ContentDisposition.cs
- NoneExcludedImageIndexConverter.cs
- RuleSettingsCollection.cs
- SrgsToken.cs
- WebHostScriptMappingsInstallComponent.cs
- BinarySecretSecurityToken.cs
- RawStylusInputCustomDataList.cs
- Package.cs
- MSAAWinEventWrap.cs
- HttpEncoderUtility.cs
- SqlWebEventProvider.cs
- XPathDocumentNavigator.cs
- OleDbParameterCollection.cs
- MethodSignatureGenerator.cs
- ClientScriptItemCollection.cs
- Compiler.cs
- HtmlUtf8RawTextWriter.cs
- FileSystemWatcher.cs
- Wizard.cs
- StrokeNodeEnumerator.cs
- XmlElementAttributes.cs
- QuaternionAnimation.cs
- TemplatedMailWebEventProvider.cs
- RichTextBoxConstants.cs
- TypeSystemProvider.cs
- ParentUndoUnit.cs
- ProfileGroupSettingsCollection.cs
- _SSPIWrapper.cs
- TextBoxAutoCompleteSourceConverter.cs
- ToolStripOverflow.cs
- ConfigurationSectionGroup.cs
- ContentElement.cs
- SqlDataSource.cs
- CompoundFileIOPermission.cs
- Int32Animation.cs
- SystemIPInterfaceProperties.cs
- ServerValidateEventArgs.cs
- SystemSounds.cs
- SupportsEventValidationAttribute.cs
- NameValueConfigurationCollection.cs
- StrongNamePublicKeyBlob.cs
- MenuItemStyle.cs
- StrokeNodeEnumerator.cs
- AssemblyName.cs
- JoinSymbol.cs
- BlockCollection.cs
- DSACryptoServiceProvider.cs
- XmlSchemaDatatype.cs
- DataGridColumnCollection.cs
- CurrentChangedEventManager.cs
- WebPartCloseVerb.cs
- InplaceBitmapMetadataWriter.cs
- JumpTask.cs
- WebPartActionVerb.cs
- UnionCqlBlock.cs
- DataGridViewCellLinkedList.cs
- KeyFrames.cs
- QilSortKey.cs
- WebBaseEventKeyComparer.cs
- SoapBinding.cs
- CodeIterationStatement.cs
- ExtensionQuery.cs
- ViewStateException.cs
- XmlTextAttribute.cs
- SQLBytesStorage.cs
- FillErrorEventArgs.cs
- Version.cs