Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HitTestWithPointDrawingContextWalker.cs
- XsltArgumentList.cs
- HttpPostedFile.cs
- BasePattern.cs
- DataContractSerializerElement.cs
- SerializeAbsoluteContext.cs
- ValueTypeFixupInfo.cs
- CompilerError.cs
- EntityKeyElement.cs
- WindowsSecurityTokenAuthenticator.cs
- InsufficientExecutionStackException.cs
- SecurityUtils.cs
- SqlProcedureAttribute.cs
- QueryRewriter.cs
- AsyncPostBackTrigger.cs
- WebPartZone.cs
- ListBoxAutomationPeer.cs
- RootProfilePropertySettingsCollection.cs
- CompilationPass2TaskInternal.cs
- DBParameter.cs
- OperationValidationEventArgs.cs
- GenericPrincipal.cs
- Properties.cs
- AspNetRouteServiceHttpHandler.cs
- ProtocolInformationReader.cs
- WebPartEditVerb.cs
- COAUTHIDENTITY.cs
- ItemCheckEvent.cs
- WebPartVerb.cs
- DataFormats.cs
- WebPartConnectionsConnectVerb.cs
- XmlSchemaSimpleContent.cs
- DataTable.cs
- GlobalizationSection.cs
- NegotiationTokenAuthenticatorStateCache.cs
- DocumentXmlWriter.cs
- XhtmlBasicLabelAdapter.cs
- ReadOnlyCollection.cs
- RegexWriter.cs
- FaultPropagationRecord.cs
- DataGridViewLinkColumn.cs
- EntitySetRetriever.cs
- GlobalId.cs
- xml.cs
- HtmlToClrEventProxy.cs
- TaskFileService.cs
- ListParagraph.cs
- TitleStyle.cs
- BufferedConnection.cs
- TextContainer.cs
- ProtocolImporter.cs
- Parsers.cs
- EffectiveValueEntry.cs
- PageSetupDialog.cs
- FieldToken.cs
- SafeFindHandle.cs
- MemberRestriction.cs
- SqlServer2KCompatibilityCheck.cs
- FormattedTextSymbols.cs
- OdbcError.cs
- ButtonPopupAdapter.cs
- WindowsPen.cs
- HttpPostServerProtocol.cs
- NativeMethods.cs
- TransformCryptoHandle.cs
- CallSiteHelpers.cs
- PointConverter.cs
- filewebresponse.cs
- Version.cs
- XmlStreamNodeWriter.cs
- AsyncPostBackTrigger.cs
- ToolStripDropDownItemDesigner.cs
- BooleanAnimationUsingKeyFrames.cs
- HandlerFactoryWrapper.cs
- PageClientProxyGenerator.cs
- HostingPreferredMapPath.cs
- RankException.cs
- MeasurementDCInfo.cs
- BrowserCapabilitiesFactory.cs
- ReferencedType.cs
- NameNode.cs
- WebBaseEventKeyComparer.cs
- OracleConnectionFactory.cs
- ImplicitInputBrush.cs
- MessageQueuePermission.cs
- ClientSession.cs
- BufferedWebEventProvider.cs
- MetadataItemCollectionFactory.cs
- NonPrimarySelectionGlyph.cs
- AuthenticatedStream.cs
- OrderedDictionary.cs
- GridViewUpdateEventArgs.cs
- OdbcErrorCollection.cs
- FontWeight.cs
- ProxyAttribute.cs
- PropertyConverter.cs
- MemberInfoSerializationHolder.cs
- ObjectQuery_EntitySqlExtensions.cs
- StateManagedCollection.cs
- RuleEngine.cs