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
- ScriptingProfileServiceSection.cs
- Matrix.cs
- DataBindingCollectionConverter.cs
- RewritingPass.cs
- iisPickupDirectory.cs
- RemotingService.cs
- PrivilegedConfigurationManager.cs
- TypedLocationWrapper.cs
- BCLDebug.cs
- InputDevice.cs
- dataSvcMapFileLoader.cs
- SafeProcessHandle.cs
- Scripts.cs
- TextAction.cs
- DelegateSerializationHolder.cs
- QueryableDataSourceEditData.cs
- SortQuery.cs
- WmlPageAdapter.cs
- Setter.cs
- WebPartConnectionCollection.cs
- CommandDesigner.cs
- MultitargetingHelpers.cs
- ThreadStartException.cs
- RegionInfo.cs
- TextTreeObjectNode.cs
- PerformanceCounterManager.cs
- ThumbButtonInfo.cs
- dataSvcMapFileLoader.cs
- DataGridViewCellLinkedList.cs
- SmtpMail.cs
- SerializationInfoEnumerator.cs
- TimelineClockCollection.cs
- UpdatePanelTrigger.cs
- HitTestParameters.cs
- MessageBuilder.cs
- BackgroundWorker.cs
- KeyFrames.cs
- ServiceInfoCollection.cs
- HandleCollector.cs
- Accessors.cs
- SRDisplayNameAttribute.cs
- StatusBarPanel.cs
- CustomAttribute.cs
- RenderData.cs
- StrokeDescriptor.cs
- DecimalConverter.cs
- DataSvcMapFile.cs
- ResourceReferenceExpression.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- _HTTPDateParse.cs
- PeerName.cs
- DataObject.cs
- TreeNodeEventArgs.cs
- RC2CryptoServiceProvider.cs
- DetailsViewCommandEventArgs.cs
- GlyphingCache.cs
- BuildProvider.cs
- ScrollBarRenderer.cs
- MouseBinding.cs
- ArrangedElementCollection.cs
- WorkflowLayouts.cs
- TimelineGroup.cs
- InternalCache.cs
- SeverityFilter.cs
- DummyDataSource.cs
- BinaryParser.cs
- SqlCacheDependencySection.cs
- assertwrapper.cs
- CuspData.cs
- CuspData.cs
- SmtpException.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- XPathNodeInfoAtom.cs
- TypeConverterHelper.cs
- HttpPostedFile.cs
- IsolatedStorageException.cs
- DecoderNLS.cs
- FragmentQuery.cs
- FileFormatException.cs
- AnnotationService.cs
- BitStack.cs
- VerificationAttribute.cs
- Visitors.cs
- DataAccessException.cs
- coordinator.cs
- VersionedStreamOwner.cs
- WebBrowserContainer.cs
- TextWriterTraceListener.cs
- BoolExpression.cs
- XmlNotation.cs
- MetabaseServerConfig.cs
- BrowserTree.cs
- BitmapPalettes.cs
- DetailsViewPagerRow.cs
- MarkupCompiler.cs
- SqlResolver.cs
- ListView.cs
- DesigntimeLicenseContextSerializer.cs
- SqlExpander.cs
- QilExpression.cs