Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / 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. //---------------------------------------------------------------------------- // //// 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
- XmlSchemaObjectTable.cs
- InternalEnumValidatorAttribute.cs
- OleDbCommandBuilder.cs
- Serializer.cs
- XmlSerializer.cs
- NetCodeGroup.cs
- Stack.cs
- EnumerableWrapperWeakToStrong.cs
- SmtpClient.cs
- XPathSingletonIterator.cs
- BooleanKeyFrameCollection.cs
- ReferenceEqualityComparer.cs
- MasterPage.cs
- WebPartCollection.cs
- SingleAnimationBase.cs
- DBDataPermissionAttribute.cs
- XmlIgnoreAttribute.cs
- Size.cs
- DefaultAsyncDataDispatcher.cs
- Misc.cs
- Monitor.cs
- WpfKnownType.cs
- PreviewPrintController.cs
- UnsafeNativeMethodsPenimc.cs
- ExternalException.cs
- Set.cs
- RuntimeIdentifierPropertyAttribute.cs
- AuthenticationManager.cs
- ImageField.cs
- MatrixCamera.cs
- SafeFindHandle.cs
- _NegoStream.cs
- NegationPusher.cs
- RoutedEventHandlerInfo.cs
- SettingsContext.cs
- PowerEase.cs
- PieceDirectory.cs
- ProxyWebPartManagerDesigner.cs
- HashLookup.cs
- LinkedResource.cs
- Rotation3DAnimation.cs
- InfocardClientCredentials.cs
- PerspectiveCamera.cs
- WebPartConnectionsConfigureVerb.cs
- RoleGroupCollection.cs
- ConfigurationStrings.cs
- StringArrayConverter.cs
- FrugalList.cs
- SoapHeaderAttribute.cs
- UidManager.cs
- TreeNode.cs
- Vector3D.cs
- DbBuffer.cs
- DataSourceSelectArguments.cs
- SuspendDesigner.cs
- KeyTime.cs
- MSAANativeProvider.cs
- HttpCookieCollection.cs
- AdornerPresentationContext.cs
- VScrollProperties.cs
- WindowsMenu.cs
- FileDataSourceCache.cs
- DataTableTypeConverter.cs
- EventDriven.cs
- FieldAccessException.cs
- Version.cs
- NativeMethods.cs
- LambdaCompiler.Expressions.cs
- BinarySecretSecurityToken.cs
- Misc.cs
- PropertyDescriptorGridEntry.cs
- TextEditorLists.cs
- ListViewContainer.cs
- FileIOPermission.cs
- formatter.cs
- RuntimeHelpers.cs
- PageFunction.cs
- KeyFrames.cs
- AlignmentYValidation.cs
- MetadataItemCollectionFactory.cs
- CredentialCache.cs
- ImageBrush.cs
- DeadCharTextComposition.cs
- Vector.cs
- FixedHyperLink.cs
- ContextItemManager.cs
- ContentFilePart.cs
- HuffCodec.cs
- HostingEnvironment.cs
- XPathException.cs
- Internal.cs
- Options.cs
- DataGridViewCheckBoxColumn.cs
- HtmlValidationSummaryAdapter.cs
- TextEditorCharacters.cs
- ListViewTableRow.cs
- CornerRadiusConverter.cs
- ResourcePermissionBase.cs
- UxThemeWrapper.cs
- FormatException.cs