Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media3D / Camera.cs / 1305600 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ComAdminWrapper.cs
- PackageDocument.cs
- IndentTextWriter.cs
- DetailsViewPagerRow.cs
- ListViewDeletedEventArgs.cs
- ComplexLine.cs
- ConfigurationElementProperty.cs
- DataServiceClientException.cs
- SqlDataSourceConfigureFilterForm.cs
- RequestCachePolicyConverter.cs
- safelink.cs
- RemoteCryptoRsaServiceProvider.cs
- MatrixIndependentAnimationStorage.cs
- TemplatedAdorner.cs
- EpmSourceTree.cs
- Font.cs
- CodeTypeDeclaration.cs
- Slider.cs
- ListItemCollection.cs
- ContentControl.cs
- SqlServer2KCompatibilityCheck.cs
- TdsParser.cs
- _NetworkingPerfCounters.cs
- HtmlInputSubmit.cs
- MouseBinding.cs
- ObjectAssociationEndMapping.cs
- XmlElement.cs
- BindingBase.cs
- PreviewPrintController.cs
- ResourceDictionary.cs
- AssociationSetEnd.cs
- PersistenceProviderElement.cs
- DataKeyPropertyAttribute.cs
- ChildChangedEventArgs.cs
- XslAstAnalyzer.cs
- RadioButtonBaseAdapter.cs
- CodeGotoStatement.cs
- FontDriver.cs
- InheritanceAttribute.cs
- Splitter.cs
- HashHelper.cs
- XslUrlEditor.cs
- SharedPerformanceCounter.cs
- CellTreeNodeVisitors.cs
- _TransmitFileOverlappedAsyncResult.cs
- DiagnosticsConfigurationHandler.cs
- LogicalMethodInfo.cs
- SHA256.cs
- Viewport2DVisual3D.cs
- ValueQuery.cs
- Grid.cs
- MultipleViewPattern.cs
- XmlWrappingWriter.cs
- SettingsProviderCollection.cs
- ClientData.cs
- DataObjectAttribute.cs
- TextTrailingCharacterEllipsis.cs
- UniqueIdentifierService.cs
- WeakReferenceList.cs
- HttpListenerRequest.cs
- ADRoleFactoryConfiguration.cs
- DataRow.cs
- BinarySerializer.cs
- ActivityBindForm.cs
- templategroup.cs
- DesignerTransaction.cs
- CollectionContainer.cs
- ToolStripCollectionEditor.cs
- SecurityCriticalDataForSet.cs
- SafeSystemMetrics.cs
- FullTrustAssemblyCollection.cs
- DataBindingValueUIHandler.cs
- ListControl.cs
- MonitoringDescriptionAttribute.cs
- CacheForPrimitiveTypes.cs
- StringConcat.cs
- FloaterBaseParaClient.cs
- CssClassPropertyAttribute.cs
- XmlTextReaderImpl.cs
- DirectoryNotFoundException.cs
- Table.cs
- ImageListUtils.cs
- TextElementCollectionHelper.cs
- ViewStateException.cs
- XamlFilter.cs
- ReachIDocumentPaginatorSerializerAsync.cs
- SafeLocalAllocation.cs
- IISMapPath.cs
- CalendarAutoFormat.cs
- DirectionalLight.cs
- TextContainerHelper.cs
- AccessText.cs
- fixedPageContentExtractor.cs
- TableHeaderCell.cs
- ElementMarkupObject.cs
- WebBrowsableAttribute.cs
- DbParameterHelper.cs
- AssemblyAssociatedContentFileAttribute.cs
- AsymmetricKeyExchangeDeformatter.cs
- ScriptResourceInfo.cs