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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FontNamesConverter.cs
- Cursor.cs
- EventlogProvider.cs
- StoreContentChangedEventArgs.cs
- StreamUpdate.cs
- DataStreamFromComStream.cs
- AssociationTypeEmitter.cs
- ActivationService.cs
- DayRenderEvent.cs
- DataViewManagerListItemTypeDescriptor.cs
- Visitor.cs
- SelectionRange.cs
- HttpContext.cs
- SponsorHelper.cs
- Table.cs
- DnsEndpointIdentity.cs
- RegexGroupCollection.cs
- TransformPatternIdentifiers.cs
- WindowsTokenRoleProvider.cs
- SystemTcpConnection.cs
- ReflectionPermission.cs
- DESCryptoServiceProvider.cs
- ScriptControl.cs
- DuplicateWaitObjectException.cs
- LicenseContext.cs
- TimerEventSubscription.cs
- BaseCodeDomTreeGenerator.cs
- Identifier.cs
- OneWayElement.cs
- MonitorWrapper.cs
- WeakHashtable.cs
- GeneralTransform3DGroup.cs
- MSAAEventDispatcher.cs
- FrameworkElement.cs
- GeometryModel3D.cs
- SerializationSectionGroup.cs
- QuaternionAnimation.cs
- AssemblyCollection.cs
- ConfigPathUtility.cs
- SequenceNumber.cs
- InProcStateClientManager.cs
- TabletDevice.cs
- OverlappedAsyncResult.cs
- LinqDataSourceUpdateEventArgs.cs
- ExtenderProvidedPropertyAttribute.cs
- ObjectDataSourceDisposingEventArgs.cs
- DataColumnCollection.cs
- SynchronizationLockException.cs
- Rotation3DAnimation.cs
- RoleBoolean.cs
- ComponentCommands.cs
- FormatConvertedBitmap.cs
- LineBreak.cs
- TemplateDefinition.cs
- TextServicesManager.cs
- ResourceFallbackManager.cs
- XmlSchemaCollection.cs
- OdbcDataAdapter.cs
- TraceListener.cs
- Stroke.cs
- AssemblyCollection.cs
- Cursors.cs
- ClientReliableChannelBinder.cs
- DataTemplateSelector.cs
- XmlAttributes.cs
- SRef.cs
- LogWriteRestartAreaAsyncResult.cs
- ComboBoxItem.cs
- DataGridViewLayoutData.cs
- SoapObjectWriter.cs
- DurableEnlistmentState.cs
- DataGridViewCellFormattingEventArgs.cs
- VersionPair.cs
- DbProviderSpecificTypePropertyAttribute.cs
- InkSerializer.cs
- CodeDomSerializer.cs
- UpdatePanelTrigger.cs
- ISSmlParser.cs
- XmlIlVisitor.cs
- RichTextBoxConstants.cs
- AxWrapperGen.cs
- GlyphingCache.cs
- VirtualPathData.cs
- ScriptModule.cs
- OutOfProcStateClientManager.cs
- WebPartMovingEventArgs.cs
- HostingEnvironmentSection.cs
- SQLGuid.cs
- ActivityPropertyReference.cs
- ButtonStandardAdapter.cs
- TextEditorMouse.cs
- StatusStrip.cs
- WebBrowser.cs
- AssociativeAggregationOperator.cs
- webbrowsersite.cs
- ClientClassGenerator.cs
- SimpleTypeResolver.cs
- CaseExpr.cs
- Rotation3D.cs
- CalloutQueueItem.cs