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
- HttpModulesSection.cs
- SHA384.cs
- Zone.cs
- PropertiesTab.cs
- ParameterModifier.cs
- RulePatternOps.cs
- TextEditorSpelling.cs
- SmiXetterAccessMap.cs
- Listbox.cs
- SecurityTokenException.cs
- DefaultDiscoveryService.cs
- Size3DValueSerializer.cs
- MultiByteCodec.cs
- RightsManagementPermission.cs
- ILGenerator.cs
- ReturnValue.cs
- AttachedAnnotation.cs
- RoutedEvent.cs
- BindingNavigator.cs
- FontStretches.cs
- HttpCookiesSection.cs
- SimpleRecyclingCache.cs
- GenericTypeParameterBuilder.cs
- HtmlControlPersistable.cs
- HttpSocketManager.cs
- TimeoutException.cs
- DispatcherTimer.cs
- GraphicsContext.cs
- _CacheStreams.cs
- AuthenticateEventArgs.cs
- XmlNamespaceMappingCollection.cs
- EventProviderClassic.cs
- DirectoryInfo.cs
- FocusTracker.cs
- OdbcException.cs
- ContentPosition.cs
- ClientSettingsStore.cs
- WindowCollection.cs
- CommandValueSerializer.cs
- InputGestureCollection.cs
- DbDataSourceEnumerator.cs
- ColumnMapProcessor.cs
- FileVersionInfo.cs
- dataprotectionpermissionattribute.cs
- ComponentResourceManager.cs
- Transform3D.cs
- TableFieldsEditor.cs
- MemberDescriptor.cs
- TreeViewDesigner.cs
- ScriptControlDescriptor.cs
- PrimitiveType.cs
- AutomationPropertyInfo.cs
- ListBox.cs
- ApplicationHost.cs
- ThousandthOfEmRealDoubles.cs
- IEnumerable.cs
- ExceptionUtil.cs
- VisualStateGroup.cs
- Win32MouseDevice.cs
- DesignTimeParseData.cs
- DoubleAnimationBase.cs
- ConfigXmlWhitespace.cs
- ArrayTypeMismatchException.cs
- XhtmlBasicObjectListAdapter.cs
- AsymmetricSignatureFormatter.cs
- XsdCachingReader.cs
- UpDownEvent.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- AccessedThroughPropertyAttribute.cs
- BuildResult.cs
- RuleCache.cs
- IImplicitResourceProvider.cs
- PackWebRequest.cs
- CodeCastExpression.cs
- TimeZone.cs
- FontFaceLayoutInfo.cs
- RelationshipManager.cs
- TemplateControlParser.cs
- versioninfo.cs
- SQLByteStorage.cs
- FormDesigner.cs
- CommonObjectSecurity.cs
- ProtocolsConfigurationHandler.cs
- QuadTree.cs
- RTTrackingProfile.cs
- SourceFileBuildProvider.cs
- HtmlEmptyTagControlBuilder.cs
- NestedContainer.cs
- VectorAnimationUsingKeyFrames.cs
- BitmapEffectInput.cs
- TextTreeUndo.cs
- State.cs
- DataObjectAttribute.cs
- CompleteWizardStep.cs
- EventLogEntryCollection.cs
- CoreSwitches.cs
- SqlUtils.cs
- FormsAuthenticationUserCollection.cs
- ReferentialConstraint.cs
- _NetworkingPerfCounters.cs