Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media3D / AxisAngleRotation3D.cs / 1 / AxisAngleRotation3D.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // //--------------------------------------------------------------------------- using System; using MS.Internal; namespace System.Windows.Media.Media3D { ////// A rotation in 3-space defined by an axis and an angle to rotate about that axis. /// public partial class AxisAngleRotation3D { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors ////// Default constructor that creates a rotation with Axis (0,1,0) and Angle of 0. /// public AxisAngleRotation3D() {} ////// Constructor taking axis and angle. /// public AxisAngleRotation3D(Vector3D axis, double angle) { Axis = axis; Angle = angle; } #endregion Constructors //------------------------------------------------------ // // Public Methods // //----------------------------------------------------- //------------------------------------------------------ // // Public Properties // //------------------------------------------------------ //----------------------------------------------------- // // Public Events // //------------------------------------------------------ //----------------------------------------------------- // // Internal Properties // //----------------------------------------------------- #region Internal Properties // Used by animation to get a snapshot of the current rotational // configuration for interpolation in Rotation3DAnimations. internal override Quaternion InternalQuaternion { get { if (_cachedQuaternionValue == c_dirtyQuaternion) { Vector3D axis = Axis; // Quaternion's axis/angle ctor throws if the axis has zero length. // // This threshold needs to match the one we used in D3DXVec3Normalize (d3dxmath9.cpp) // and in unmanaged code. See also AxisAngleRotation3D.cpp. if (axis.LengthSquared > DoubleUtil.FLT_MIN) { _cachedQuaternionValue = new Quaternion(axis, Angle); } else { // If we have a zero-length axis we return identity (i.e., // we consider this to be no rotation.) _cachedQuaternionValue = Quaternion.Identity; } } return _cachedQuaternionValue; } } #endregion Internal Properties internal void AxisPropertyChangedHook(DependencyPropertyChangedEventArgs e) { _cachedQuaternionValue = c_dirtyQuaternion; } internal void AnglePropertyChangedHook(DependencyPropertyChangedEventArgs e) { _cachedQuaternionValue = c_dirtyQuaternion; } //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ private Quaternion _cachedQuaternionValue = c_dirtyQuaternion; // Arbitrary quaternion that will signify that our cached quat is dirty // Reasonable quaternions are normalized so it's very unlikely that this // will ever occurr in a normal application. internal static readonly Quaternion c_dirtyQuaternion = new Quaternion( Math.E, Math.PI, Math.E * Math.PI, 55.0 ); } } // 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
- BuiltInExpr.cs
- InstanceValue.cs
- objectquery_tresulttype.cs
- RemoteWebConfigurationHost.cs
- BuildManagerHost.cs
- SqlVisitor.cs
- BypassElement.cs
- ColumnMapVisitor.cs
- DigitShape.cs
- CqlBlock.cs
- Int16Storage.cs
- SafeFileHandle.cs
- ExchangeUtilities.cs
- ObfuscateAssemblyAttribute.cs
- ServicePrincipalNameElement.cs
- ComplexPropertyEntry.cs
- PageClientProxyGenerator.cs
- PowerStatus.cs
- Point3DCollectionConverter.cs
- HttpWebRequestElement.cs
- FixedSOMElement.cs
- HiddenFieldPageStatePersister.cs
- DesignParameter.cs
- Point4DConverter.cs
- BinaryMethodMessage.cs
- SiteMap.cs
- SystemTcpConnection.cs
- PrintingPermissionAttribute.cs
- listitem.cs
- ColumnMapTranslator.cs
- XhtmlConformanceSection.cs
- SecureConversationDriver.cs
- IteratorDescriptor.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- Accessible.cs
- PocoPropertyAccessorStrategy.cs
- DataGridHeaderBorder.cs
- CqlWriter.cs
- StateMachine.cs
- PrimitiveDataContract.cs
- Size.cs
- NodeInfo.cs
- DataGridCommandEventArgs.cs
- WebPartActionVerb.cs
- Panel.cs
- EdgeModeValidation.cs
- CounterCreationDataConverter.cs
- HitTestDrawingContextWalker.cs
- DataGridViewHeaderCell.cs
- WebResponse.cs
- ImageList.cs
- BuildProviderAppliesToAttribute.cs
- SettingsAttributeDictionary.cs
- XmlUtil.cs
- UnsafeNativeMethodsPenimc.cs
- TemplateControlCodeDomTreeGenerator.cs
- elementinformation.cs
- ObjectQuery_EntitySqlExtensions.cs
- PEFileReader.cs
- BamlLocalizabilityResolver.cs
- TextTreePropertyUndoUnit.cs
- PrivilegeNotHeldException.cs
- ListViewAutomationPeer.cs
- CmsUtils.cs
- RemotingAttributes.cs
- PinnedBufferMemoryStream.cs
- PointConverter.cs
- ExpressionEditorAttribute.cs
- StoreAnnotationsMap.cs
- MailWebEventProvider.cs
- ExtentKey.cs
- SQLRoleProvider.cs
- TimeoutConverter.cs
- RawAppCommandInputReport.cs
- TextEditorSpelling.cs
- ResourcesBuildProvider.cs
- CatalogZone.cs
- TableRowCollection.cs
- WindowPattern.cs
- ArrayMergeHelper.cs
- VirtualizedContainerService.cs
- HebrewNumber.cs
- PublisherIdentityPermission.cs
- ClassDataContract.cs
- ListArgumentProvider.cs
- CheckBoxList.cs
- BitmapDownload.cs
- CutCopyPasteHelper.cs
- ScriptManager.cs
- UnmanagedMemoryStream.cs
- ClientClassGenerator.cs
- XmlDocumentSerializer.cs
- dtdvalidator.cs
- SharedUtils.cs
- AggregateNode.cs
- ComponentResourceKeyConverter.cs
- Helpers.cs
- XmlSecureResolver.cs
- MdImport.cs
- StatusBarAutomationPeer.cs