Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media3D / AxisAngleRotation3D.cs / 1305600 / 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
- EmbeddedMailObjectsCollection.cs
- KernelTypeValidation.cs
- LeafCellTreeNode.cs
- safesecurityhelperavalon.cs
- TextEditorContextMenu.cs
- GeometryCombineModeValidation.cs
- Brushes.cs
- ServiceDurableInstance.cs
- XhtmlBasicLabelAdapter.cs
- OverlappedAsyncResult.cs
- WindowsUpDown.cs
- BindingList.cs
- CustomLineCap.cs
- WebServicesSection.cs
- PageTheme.cs
- MetabaseServerConfig.cs
- ClientConfigurationSystem.cs
- EdmItemCollection.cs
- NetworkStream.cs
- TemplateBindingExtension.cs
- httpserverutility.cs
- ListViewInsertEventArgs.cs
- CharEntityEncoderFallback.cs
- WebPartConnectionCollection.cs
- OptimisticConcurrencyException.cs
- NetworkCredential.cs
- DefaultBindingPropertyAttribute.cs
- BitmapEffectGeneralTransform.cs
- Parser.cs
- DataColumnMappingCollection.cs
- DataGridViewSelectedRowCollection.cs
- XmlJsonReader.cs
- FileSystemEventArgs.cs
- CommandHelper.cs
- VisualStyleRenderer.cs
- TrackBar.cs
- VerticalAlignConverter.cs
- AutomationTextAttribute.cs
- TrackBarRenderer.cs
- ProviderConnectionPointCollection.cs
- Fonts.cs
- ValidateNames.cs
- DSASignatureFormatter.cs
- LinkClickEvent.cs
- ItemMap.cs
- StructuralCache.cs
- AuthorizationRuleCollection.cs
- ListViewItem.cs
- SqlDependencyUtils.cs
- GeneralTransform3DGroup.cs
- Site.cs
- MessageBox.cs
- MenuItem.cs
- ComEventsSink.cs
- DebugViewWriter.cs
- MaterialGroup.cs
- AttachedPropertyBrowsableAttribute.cs
- DebugView.cs
- DoubleConverter.cs
- DataServiceRequest.cs
- ListControl.cs
- MailMessage.cs
- ManualResetEvent.cs
- SystemColors.cs
- UnsafeNativeMethods.cs
- WebPartConnectVerb.cs
- StylusButtonCollection.cs
- QilList.cs
- XmlDocumentType.cs
- NativeMethodsOther.cs
- CookieProtection.cs
- DbConnectionStringCommon.cs
- IgnoreSection.cs
- WebPartConnectionCollection.cs
- TextDecorationLocationValidation.cs
- SynchronousReceiveBehavior.cs
- ObjectConverter.cs
- CardSpaceSelector.cs
- PersonalizationStateQuery.cs
- XmlAttributeCache.cs
- DCSafeHandle.cs
- RadioButton.cs
- PeerName.cs
- MapPathBasedVirtualPathProvider.cs
- ExclusiveNamedPipeTransportManager.cs
- TransformerTypeCollection.cs
- Intellisense.cs
- IConvertible.cs
- EditingMode.cs
- InitializationEventAttribute.cs
- HelpFileFileNameEditor.cs
- HtmlTableRow.cs
- FontStretch.cs
- ButtonBase.cs
- BrushValueSerializer.cs
- ObjectViewListener.cs
- ToolboxService.cs
- FontInfo.cs
- ArrayList.cs
- APCustomTypeDescriptor.cs