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
- ShimAsPublicXamlType.cs
- BamlTreeUpdater.cs
- XmlTextAttribute.cs
- Compiler.cs
- ParameterToken.cs
- HandleCollector.cs
- ScheduleChanges.cs
- StyleSheetDesigner.cs
- ContractBase.cs
- VerticalAlignConverter.cs
- DesignerForm.cs
- TemplateControlBuildProvider.cs
- RemoteWebConfigurationHostServer.cs
- ContractValidationHelper.cs
- SqlDataSourceSummaryPanel.cs
- SortedDictionary.cs
- TrackingServices.cs
- HtmlInputImage.cs
- IDReferencePropertyAttribute.cs
- NamespaceMapping.cs
- Helpers.cs
- NodeFunctions.cs
- UndoEngine.cs
- RepeatButton.cs
- RegexRunner.cs
- KeyboardNavigation.cs
- CoreSwitches.cs
- DataColumnCollection.cs
- HtmlShim.cs
- SettingsPropertyValueCollection.cs
- LoginView.cs
- InvalidPrinterException.cs
- ProcessHostFactoryHelper.cs
- RenderDataDrawingContext.cs
- InternalConfigSettingsFactory.cs
- DataGridViewCellLinkedList.cs
- SmtpCommands.cs
- PrintSchema.cs
- CharAnimationUsingKeyFrames.cs
- DesignOnlyAttribute.cs
- DiagnosticsConfigurationHandler.cs
- DPCustomTypeDescriptor.cs
- CredentialCache.cs
- ISO2022Encoding.cs
- CodeCastExpression.cs
- CodeAccessPermission.cs
- LocatorPartList.cs
- StrokeNodeEnumerator.cs
- PackagePart.cs
- AccessViolationException.cs
- GridItem.cs
- ProfileSection.cs
- SafeReversePInvokeHandle.cs
- CheckedPointers.cs
- Material.cs
- ErrorRuntimeConfig.cs
- BasicKeyConstraint.cs
- InternalRelationshipCollection.cs
- ClientCredentialsElement.cs
- DataBoundControlHelper.cs
- ListCollectionView.cs
- ReadOnlyMetadataCollection.cs
- IdentityHolder.cs
- RawStylusActions.cs
- ContractHandle.cs
- Int16KeyFrameCollection.cs
- TypeDescriptionProviderAttribute.cs
- HoistedLocals.cs
- FunctionMappingTranslator.cs
- SystemIPv4InterfaceProperties.cs
- HttpHandlerAction.cs
- DispatcherProcessingDisabled.cs
- NetworkInformationPermission.cs
- WebPartEventArgs.cs
- AsyncInvokeOperation.cs
- FontWeightConverter.cs
- PerfCounters.cs
- WebConvert.cs
- PropertiesTab.cs
- NetNamedPipeSecurityMode.cs
- NameValueCollection.cs
- FieldDescriptor.cs
- AsymmetricKeyExchangeFormatter.cs
- IPAddress.cs
- CheckBoxRenderer.cs
- LogReserveAndAppendState.cs
- ResolveCriteria.cs
- Literal.cs
- DrawingContextDrawingContextWalker.cs
- AutoCompleteStringCollection.cs
- PermissionRequestEvidence.cs
- RecognizedAudio.cs
- Quaternion.cs
- SqlDataSourceCommandEventArgs.cs
- Win32KeyboardDevice.cs
- PersonalizationStateInfo.cs
- DataColumnMapping.cs
- HashRepartitionStream.cs
- VersionValidator.cs
- InputElement.cs