Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- OracleCommand.cs
- MailSettingsSection.cs
- PointValueSerializer.cs
- SchemaSetCompiler.cs
- DebugHandleTracker.cs
- DataGridViewCellMouseEventArgs.cs
- ControlParser.cs
- SelectionProcessor.cs
- X509Certificate.cs
- DropShadowEffect.cs
- updatecommandorderer.cs
- DataServiceRequestException.cs
- SystemKeyConverter.cs
- SizeAnimationClockResource.cs
- XmlAttributeOverrides.cs
- TraceLevelStore.cs
- PipelineModuleStepContainer.cs
- StrongNameKeyPair.cs
- SecurityDocument.cs
- XmlnsDefinitionAttribute.cs
- InplaceBitmapMetadataWriter.cs
- HtmlInputText.cs
- TextMarkerSource.cs
- coordinatorfactory.cs
- TextBounds.cs
- NavigationProperty.cs
- TemplatePagerField.cs
- PageAsyncTask.cs
- EventHandlerService.cs
- DefaultHttpHandler.cs
- Typeface.cs
- ManipulationDelta.cs
- ConnectivityStatus.cs
- VectorAnimationUsingKeyFrames.cs
- ScalarOps.cs
- GlyphRunDrawing.cs
- IgnoreFlushAndCloseStream.cs
- EnumValidator.cs
- VisualTarget.cs
- CLSCompliantAttribute.cs
- MarginsConverter.cs
- CoreSwitches.cs
- WindowsMenu.cs
- SiteMapDataSourceView.cs
- SqlPersonalizationProvider.cs
- XmlSchemaSimpleTypeRestriction.cs
- WasEndpointConfigContainer.cs
- CryptoHandle.cs
- ScrollProviderWrapper.cs
- CheckBox.cs
- InputReportEventArgs.cs
- TreeViewItem.cs
- PromptStyle.cs
- GridViewRowEventArgs.cs
- CollectionChangedEventManager.cs
- SchemaImporter.cs
- PropertyDescriptorCollection.cs
- PrintingPermissionAttribute.cs
- LinkClickEvent.cs
- SupportsEventValidationAttribute.cs
- ColumnMapProcessor.cs
- AliasGenerator.cs
- WorkerRequest.cs
- COM2ExtendedTypeConverter.cs
- LoginView.cs
- GridViewRowCollection.cs
- NetStream.cs
- NetworkStream.cs
- CodeTypeParameter.cs
- StylusButtonCollection.cs
- IPEndPointCollection.cs
- RegexWriter.cs
- SHA256Managed.cs
- TryExpression.cs
- ContextStaticAttribute.cs
- CreateUserWizard.cs
- StackBuilderSink.cs
- HwndKeyboardInputProvider.cs
- KnownBoxes.cs
- AnnotationComponentChooser.cs
- StrongName.cs
- Point3DCollectionValueSerializer.cs
- XpsViewerException.cs
- EventData.cs
- ContextMenuAutomationPeer.cs
- TableCell.cs
- URLEditor.cs
- WorkflowMessageEventHandler.cs
- Descriptor.cs
- HwndStylusInputProvider.cs
- ControlCollection.cs
- SecurityPermission.cs
- coordinatorfactory.cs
- ServiceHostFactory.cs
- DataTableReaderListener.cs
- ActionFrame.cs
- CodeDomExtensionMethods.cs
- Pen.cs
- WebScriptEnablingBehavior.cs
- DataBindingCollectionEditor.cs