Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Core / CSharp / System / Windows / Media3D / Camera.cs / 1 / Camera.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Composition; namespace System.Windows.Media.Media3D { ////// The Camera is the mechanism by which a 3D model is projected onto /// a 2D visual. The Camera itself is an abstract base class. /// public abstract partial class Camera : Animatable { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- // Prevent 3rd parties from extending this abstract base class. internal Camera() {} //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- //------------------------------------------------------ // // Public Properties // //------------------------------------------------------ //----------------------------------------------------- // // Public Events // //------------------------------------------------------ //----------------------------------------------------- // // Internal Methods // //----------------------------------------------------- #region Internal Methods // Creates a ray by projecting the given point on the viewport into the scene. // Used for bridging 2D -> 3D hit testing. // // The latter two parameters in this method are used to deal with the // case where the camera's near plane is far away from the viewport // contents. In these cases, we can sometimes construct a new, closer, // near plane and start the ray on that plane. To do this, we need an // axis-aligned bounding box of the viewport's contents (boundingRect). // We also need to return the distance between the original an new near // planes (distanceAdjustment), so we can correct the hit-test // distances before handing them back to the user. For more // information, see WindowsOS Bug #1329733. // internal abstract RayHitTestParameters RayFromViewportPoint(Point point, Size viewSize, Rect3D boundingRect, out double distanceAdjustment); internal abstract Matrix3D GetViewMatrix(); internal abstract Matrix3D GetProjectionMatrix(double aspectRatio); internal static void PrependInverseTransform(Transform3D transform, ref Matrix3D viewMatrix) { if (transform != null && transform != Transform3D.Identity) { PrependInverseTransform(transform.Value, ref viewMatrix); } } // Helper method to prepend the inverse of Camera.Transform to the // the given viewMatrix. This is used by the various GetViewMatrix() // and RayFromViewportPoint implementations. // // Transforming the camera is equivalent to applying the inverse // transform to the scene. We invert the transform and prepend it to // the result of viewMatrix: // // -1 // viewMatrix = Camera.Transform x viewMatrix // // If the matrix is non-invertable we set the viewMatrix to NaNs which // will result in nothing being rendered. This is the correct behavior // since the near and far planes will have collapsed onto each other. internal static void PrependInverseTransform(Matrix3D matrix, ref Matrix3D viewMatrix) { if (!matrix.InvertCore()) { // If the matrix is non-invertable we return a NaN matrix. viewMatrix = new Matrix3D( double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN); } else { viewMatrix.Prepend(matrix); } } #endregion Internal Methods //----------------------------------------------------- // // Internal Properties // //------------------------------------------------------ #region Internal Properties #endregion Internal Properties //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Fields #endregion 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; using System.Diagnostics; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Composition; namespace System.Windows.Media.Media3D { ////// The Camera is the mechanism by which a 3D model is projected onto /// a 2D visual. The Camera itself is an abstract base class. /// public abstract partial class Camera : Animatable { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- // Prevent 3rd parties from extending this abstract base class. internal Camera() {} //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- //------------------------------------------------------ // // Public Properties // //------------------------------------------------------ //----------------------------------------------------- // // Public Events // //------------------------------------------------------ //----------------------------------------------------- // // Internal Methods // //----------------------------------------------------- #region Internal Methods // Creates a ray by projecting the given point on the viewport into the scene. // Used for bridging 2D -> 3D hit testing. // // The latter two parameters in this method are used to deal with the // case where the camera's near plane is far away from the viewport // contents. In these cases, we can sometimes construct a new, closer, // near plane and start the ray on that plane. To do this, we need an // axis-aligned bounding box of the viewport's contents (boundingRect). // We also need to return the distance between the original an new near // planes (distanceAdjustment), so we can correct the hit-test // distances before handing them back to the user. For more // information, see WindowsOS Bug #1329733. // internal abstract RayHitTestParameters RayFromViewportPoint(Point point, Size viewSize, Rect3D boundingRect, out double distanceAdjustment); internal abstract Matrix3D GetViewMatrix(); internal abstract Matrix3D GetProjectionMatrix(double aspectRatio); internal static void PrependInverseTransform(Transform3D transform, ref Matrix3D viewMatrix) { if (transform != null && transform != Transform3D.Identity) { PrependInverseTransform(transform.Value, ref viewMatrix); } } // Helper method to prepend the inverse of Camera.Transform to the // the given viewMatrix. This is used by the various GetViewMatrix() // and RayFromViewportPoint implementations. // // Transforming the camera is equivalent to applying the inverse // transform to the scene. We invert the transform and prepend it to // the result of viewMatrix: // // -1 // viewMatrix = Camera.Transform x viewMatrix // // If the matrix is non-invertable we set the viewMatrix to NaNs which // will result in nothing being rendered. This is the correct behavior // since the near and far planes will have collapsed onto each other. internal static void PrependInverseTransform(Matrix3D matrix, ref Matrix3D viewMatrix) { if (!matrix.InvertCore()) { // If the matrix is non-invertable we return a NaN matrix. viewMatrix = new Matrix3D( double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN, double.NaN); } else { viewMatrix.Prepend(matrix); } } #endregion Internal Methods //----------------------------------------------------- // // Internal Properties // //------------------------------------------------------ #region Internal Properties #endregion Internal Properties //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Fields #endregion 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
- TripleDESCryptoServiceProvider.cs
- GeometryModel3D.cs
- AliasedExpr.cs
- Accessors.cs
- TextWriter.cs
- ListControl.cs
- SettingsAttributes.cs
- MenuItemStyleCollection.cs
- SortedList.cs
- PermissionRequestEvidence.cs
- SqlRetyper.cs
- KoreanCalendar.cs
- _CookieModule.cs
- WebPartHelpVerb.cs
- ArraySegment.cs
- Message.cs
- TableRowGroup.cs
- StringUtil.cs
- FieldBuilder.cs
- ControlBuilder.cs
- RouteUrlExpressionBuilder.cs
- GeneratedCodeAttribute.cs
- FontSourceCollection.cs
- TreeNodeSelectionProcessor.cs
- CodeAttributeArgument.cs
- UpdatePanelTriggerCollection.cs
- WindowsStatic.cs
- DbTransaction.cs
- EndpointAddressMessageFilter.cs
- VideoDrawing.cs
- CultureNotFoundException.cs
- CompositeKey.cs
- SymbolEqualComparer.cs
- SmtpAuthenticationManager.cs
- TableAutomationPeer.cs
- BamlRecordReader.cs
- TemplateComponentConnector.cs
- ListViewGroupConverter.cs
- NoResizeHandleGlyph.cs
- TypeSystem.cs
- GridPattern.cs
- TaskHelper.cs
- StructuralObject.cs
- ListView.cs
- FontUnitConverter.cs
- WebPartEventArgs.cs
- AccessControlList.cs
- MemoryRecordBuffer.cs
- Error.cs
- ScrollViewerAutomationPeer.cs
- ConnectionPointConverter.cs
- XmlSerializer.cs
- HGlobalSafeHandle.cs
- RenderContext.cs
- NextPreviousPagerField.cs
- ScriptRegistrationManager.cs
- SqlMethodAttribute.cs
- XmlSchemaCollection.cs
- NamedPermissionSet.cs
- _ConnectionGroup.cs
- SpecialNameAttribute.cs
- CollectionTraceRecord.cs
- XmlSchemaValidationException.cs
- PeerReferralPolicy.cs
- BuildManagerHost.cs
- RawStylusSystemGestureInputReport.cs
- WorkflowNamespace.cs
- PingOptions.cs
- HttpConfigurationContext.cs
- DesignTimeVisibleAttribute.cs
- HtmlInputCheckBox.cs
- TraceListeners.cs
- WebSysDefaultValueAttribute.cs
- FixedSOMTextRun.cs
- WindowsGraphicsCacheManager.cs
- Axis.cs
- DirectoryInfo.cs
- ScrollProviderWrapper.cs
- ThumbAutomationPeer.cs
- ColumnHeaderConverter.cs
- MessageSecurityTokenVersion.cs
- CharUnicodeInfo.cs
- DirectoryInfo.cs
- DataGridItem.cs
- UrlAuthFailedErrorFormatter.cs
- NameValueSectionHandler.cs
- XmlDocumentFragment.cs
- Attributes.cs
- PropertyEmitterBase.cs
- CardSpacePolicyElement.cs
- HandleCollector.cs
- SiteMapDataSourceView.cs
- ObjectStateEntryDbDataRecord.cs
- altserialization.cs
- _SecureChannel.cs
- UnsafeNativeMethodsMilCoreApi.cs
- safex509handles.cs
- StylusEditingBehavior.cs
- RequestResponse.cs
- PropertyGridEditorPart.cs