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 / 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
- CodeTypeParameterCollection.cs
- FixedTextBuilder.cs
- CustomCredentialPolicy.cs
- CodeNamespaceImport.cs
- SHA256.cs
- ManifestResourceInfo.cs
- SerTrace.cs
- StyleBamlRecordReader.cs
- GiveFeedbackEvent.cs
- InfoCardMetadataExchangeClient.cs
- FixedDocumentSequencePaginator.cs
- IisTraceWebEventProvider.cs
- TableAutomationPeer.cs
- MediaPlayer.cs
- AssertFilter.cs
- ZoneButton.cs
- UriGenerator.cs
- CatalogZone.cs
- FolderBrowserDialog.cs
- Span.cs
- MemoryFailPoint.cs
- OutputCacheProfile.cs
- AppSecurityManager.cs
- LinkedResourceCollection.cs
- TypeBrowser.xaml.cs
- DefaultObjectMappingItemCollection.cs
- FileStream.cs
- BamlRecordReader.cs
- CqlQuery.cs
- Help.cs
- ClientProxyGenerator.cs
- WebPartEditorCancelVerb.cs
- XmlSchemaImport.cs
- ZipIOBlockManager.cs
- DataColumnMapping.cs
- XmlSerializerFactory.cs
- NameScopePropertyAttribute.cs
- ResponseBodyWriter.cs
- peernodestatemanager.cs
- DispatcherExceptionFilterEventArgs.cs
- FileClassifier.cs
- BasicHttpMessageSecurityElement.cs
- ReaderContextStackData.cs
- designeractionbehavior.cs
- TypeUsage.cs
- DBConnectionString.cs
- ClockGroup.cs
- PartitionedStream.cs
- MobileControlDesigner.cs
- HtmlEmptyTagControlBuilder.cs
- TargetPerspective.cs
- EntityDataSourceChangedEventArgs.cs
- DetailsViewRow.cs
- WaitForChangedResult.cs
- PresentationSource.cs
- SurrogateSelector.cs
- HierarchicalDataSourceControl.cs
- glyphs.cs
- Durable.cs
- FileDialog_Vista_Interop.cs
- ConfigXmlElement.cs
- BitmapEffect.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- DataRow.cs
- NoClickablePointException.cs
- TransactedBatchContext.cs
- GlyphCollection.cs
- InvalidMessageContractException.cs
- DataGridViewImageCell.cs
- SmiXetterAccessMap.cs
- CmsInterop.cs
- XmlSerializerAssemblyAttribute.cs
- QilGenerator.cs
- SvcMapFile.cs
- FileDetails.cs
- validation.cs
- ToolStripRenderer.cs
- SpeechDetectedEventArgs.cs
- ProfileGroupSettingsCollection.cs
- XmlUrlResolver.cs
- SchemaTableOptionalColumn.cs
- Window.cs
- ServiceOperationInvoker.cs
- HebrewCalendar.cs
- ExpressionCopier.cs
- DiagnosticTraceSource.cs
- TreeNodeBindingCollection.cs
- EncoderFallback.cs
- SamlAssertion.cs
- BaseDataList.cs
- PagesSection.cs
- ToolBarButton.cs
- Matrix.cs
- XmlJsonReader.cs
- DataObjectSettingDataEventArgs.cs
- IPPacketInformation.cs
- RoutedPropertyChangedEventArgs.cs
- Oid.cs
- JsonSerializer.cs
- CodeSnippetExpression.cs