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
- ThreadAttributes.cs
- SubordinateTransaction.cs
- SecurityKeyUsage.cs
- lengthconverter.cs
- XmlSchemaComplexContent.cs
- RawStylusSystemGestureInputReport.cs
- Util.cs
- EntityDataSourceQueryBuilder.cs
- GAC.cs
- AttributeXamlType.cs
- SafeThemeHandle.cs
- followingsibling.cs
- ArraySubsetEnumerator.cs
- SvcMapFile.cs
- CheckoutException.cs
- EventProperty.cs
- MetaModel.cs
- Mutex.cs
- WorkflowDefinitionDispenser.cs
- SrgsElement.cs
- Interlocked.cs
- odbcmetadatacolumnnames.cs
- LayoutExceptionEventArgs.cs
- EntityDataSourceStatementEditor.cs
- DeclarativeCatalogPart.cs
- SocketAddress.cs
- TableCellCollection.cs
- FunctionQuery.cs
- GlyphsSerializer.cs
- WeakReferenceKey.cs
- XomlCompilerHelpers.cs
- HttpInputStream.cs
- PassportPrincipal.cs
- PersonalizationAdministration.cs
- SQLMembershipProvider.cs
- _NetworkingPerfCounters.cs
- GeometryHitTestParameters.cs
- StringComparer.cs
- ContextBase.cs
- ListViewItemMouseHoverEvent.cs
- CheckBox.cs
- CheckBoxField.cs
- MappingSource.cs
- SimpleRecyclingCache.cs
- HierarchicalDataSourceConverter.cs
- BamlRecords.cs
- AsnEncodedData.cs
- WSFederationHttpBindingElement.cs
- MsmqMessage.cs
- ApplyTemplatesAction.cs
- Thread.cs
- TraceSwitch.cs
- ReflectionHelper.cs
- BamlVersionHeader.cs
- SQLUtility.cs
- ManagementObjectSearcher.cs
- DeferredTextReference.cs
- RuntimeUtils.cs
- PenLineJoinValidation.cs
- DbProviderFactory.cs
- MimeTypePropertyAttribute.cs
- XmlCharacterData.cs
- BamlCollectionHolder.cs
- VoiceInfo.cs
- ContentValidator.cs
- BitmapSourceSafeMILHandle.cs
- CheckBox.cs
- Propagator.Evaluator.cs
- DesignTimeVisibleAttribute.cs
- PreservationFileReader.cs
- TableLayoutStyleCollection.cs
- Transform.cs
- ExtractorMetadata.cs
- PartitionedStream.cs
- HttpStaticObjectsCollectionBase.cs
- ToolStripInSituService.cs
- ProfileGroupSettingsCollection.cs
- WmlSelectionListAdapter.cs
- DataControlHelper.cs
- ColumnResizeAdorner.cs
- Point.cs
- OutputCacheSettings.cs
- ComplexPropertyEntry.cs
- CollectionsUtil.cs
- HttpRuntimeSection.cs
- Positioning.cs
- ToolStripDropDownButton.cs
- ScriptControlDescriptor.cs
- ComAdminWrapper.cs
- EntityKeyElement.cs
- RadioButtonPopupAdapter.cs
- Helper.cs
- TextEditorLists.cs
- Transform.cs
- QueueProcessor.cs
- DetailsViewUpdateEventArgs.cs
- DbConnectionPool.cs
- DynamicField.cs
- Properties.cs
- Variant.cs