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
- PathHelper.cs
- MessageQueueEnumerator.cs
- DataError.cs
- EventWaitHandle.cs
- FormsAuthenticationModule.cs
- UInt16Converter.cs
- PointKeyFrameCollection.cs
- ClassData.cs
- ScriptControlManager.cs
- AutomationElementCollection.cs
- ServiceBusyException.cs
- RepeatBehaviorConverter.cs
- KeysConverter.cs
- SizeF.cs
- DataControlFieldCollection.cs
- DataSourceGeneratorException.cs
- ProtocolInformationWriter.cs
- CompilerScopeManager.cs
- NativeMsmqMessage.cs
- MouseGesture.cs
- SharedDp.cs
- TransactionalPackage.cs
- ToolStripPanel.cs
- LinqDataSource.cs
- ProcessInfo.cs
- WbmpConverter.cs
- __FastResourceComparer.cs
- HtmlPhoneCallAdapter.cs
- EnumValidator.cs
- HashHelper.cs
- EntityEntry.cs
- Permission.cs
- ClientSponsor.cs
- PasswordDeriveBytes.cs
- DataTableClearEvent.cs
- smtppermission.cs
- SettingsPropertyNotFoundException.cs
- webbrowsersite.cs
- CfgArc.cs
- MonthChangedEventArgs.cs
- DataGridViewComboBoxCell.cs
- List.cs
- BinaryObjectReader.cs
- DecoratedNameAttribute.cs
- MethodBuilder.cs
- CheckBoxRenderer.cs
- COM2TypeInfoProcessor.cs
- TypeBrowser.xaml.cs
- NextPreviousPagerField.cs
- DataGridParentRows.cs
- ClockGroup.cs
- GridViewColumnHeaderAutomationPeer.cs
- LabelEditEvent.cs
- IIS7ConfigurationLoader.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- SessionEndingCancelEventArgs.cs
- NullableBoolConverter.cs
- RemotingConfiguration.cs
- StrokeCollectionDefaultValueFactory.cs
- GlyphInfoList.cs
- WinInetCache.cs
- EnvironmentPermission.cs
- xmlglyphRunInfo.cs
- ListBoxItemWrapperAutomationPeer.cs
- MappingSource.cs
- CommunicationException.cs
- WinHttpWebProxyFinder.cs
- WeakRefEnumerator.cs
- SafeCancelMibChangeNotify.cs
- BufferModesCollection.cs
- QuaternionRotation3D.cs
- XamlToRtfWriter.cs
- PropertyMapper.cs
- KeyValuePair.cs
- WebPartDisplayModeCollection.cs
- TemplatePagerField.cs
- MobileControl.cs
- HttpListenerPrefixCollection.cs
- SystemInfo.cs
- NumberAction.cs
- SelectingProviderEventArgs.cs
- QuaternionAnimationUsingKeyFrames.cs
- CodeDOMUtility.cs
- XmlSchemaExternal.cs
- StaticDataManager.cs
- VideoDrawing.cs
- CommonObjectSecurity.cs
- SecurityProtocol.cs
- RuleInfoComparer.cs
- RijndaelCryptoServiceProvider.cs
- RootProfilePropertySettingsCollection.cs
- XmlQueryRuntime.cs
- NativeObjectSecurity.cs
- StringSorter.cs
- RegexWorker.cs
- BackEase.cs
- WorkflowMarkupSerializerMapping.cs
- DataGridViewCellMouseEventArgs.cs
- DateTimeFormat.cs
- TargetControlTypeCache.cs