Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- BufferedWebEventProvider.cs
- RTLAwareMessageBox.cs
- FilterEventArgs.cs
- XPathParser.cs
- UrlUtility.cs
- WebBrowserContainer.cs
- FunctionQuery.cs
- PackUriHelper.cs
- SynchronizationContext.cs
- DocumentXPathNavigator.cs
- Padding.cs
- StdValidatorsAndConverters.cs
- Graph.cs
- MessageQueuePermissionEntry.cs
- ApplicationServiceManager.cs
- DelegateBodyWriter.cs
- Attributes.cs
- BevelBitmapEffect.cs
- SelectionProviderWrapper.cs
- QueryInterceptorAttribute.cs
- ArrangedElementCollection.cs
- HtmlInputSubmit.cs
- LocatorManager.cs
- InlineObject.cs
- DataViewManagerListItemTypeDescriptor.cs
- ScrollableControl.cs
- ObjectItemConventionAssemblyLoader.cs
- StreamGeometryContext.cs
- DBCommandBuilder.cs
- ToolStripButton.cs
- RuleRefElement.cs
- RootBuilder.cs
- DBBindings.cs
- ReverseInheritProperty.cs
- BindingNavigator.cs
- ToolStripArrowRenderEventArgs.cs
- Int32CollectionValueSerializer.cs
- DbProviderFactoriesConfigurationHandler.cs
- Button.cs
- StringUtil.cs
- DirectionalLight.cs
- TypeSystemProvider.cs
- NetworkStream.cs
- ServicePointManagerElement.cs
- TextPointer.cs
- CSharpCodeProvider.cs
- PersonalizationEntry.cs
- VariantWrapper.cs
- XomlDesignerLoader.cs
- TextElementAutomationPeer.cs
- DispatcherExceptionEventArgs.cs
- ActiveXSite.cs
- DataGridRowClipboardEventArgs.cs
- SiteMapDataSourceView.cs
- CodeEventReferenceExpression.cs
- FontDriver.cs
- EventSetter.cs
- OleCmdHelper.cs
- UncommonField.cs
- CatalogZoneDesigner.cs
- XPathBinder.cs
- PrinterResolution.cs
- PreloadedPackages.cs
- BindStream.cs
- EntityDataSourceChangingEventArgs.cs
- SatelliteContractVersionAttribute.cs
- DoubleCollectionValueSerializer.cs
- NamespaceList.cs
- EtwTrace.cs
- SQLMoney.cs
- WebPartHelpVerb.cs
- TextTreeInsertElementUndoUnit.cs
- FactoryGenerator.cs
- AutomationTextAttribute.cs
- ReferenceEqualityComparer.cs
- AnnotationStore.cs
- MessageBodyMemberAttribute.cs
- AccessedThroughPropertyAttribute.cs
- HtmlInputRadioButton.cs
- FusionWrap.cs
- TrackingRecord.cs
- WizardSideBarListControlItemEventArgs.cs
- TextBlockAutomationPeer.cs
- ConfigXmlElement.cs
- BaseTypeViewSchema.cs
- FilterException.cs
- _FtpControlStream.cs
- ClientUtils.cs
- IriParsingElement.cs
- CategoryGridEntry.cs
- EmptyEnumerable.cs
- _OSSOCK.cs
- ToolboxItem.cs
- ProfileGroupSettings.cs
- RepeaterCommandEventArgs.cs
- SqlBulkCopyColumnMappingCollection.cs
- HtmlControl.cs
- ObjectFullSpanRewriter.cs
- NumberFormatInfo.cs
- PropertyTabChangedEvent.cs