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
- EnumUnknown.cs
- PersonalizationStateInfo.cs
- SqlTypeConverter.cs
- TreeNodeStyle.cs
- DocumentGridPage.cs
- ObjectListComponentEditor.cs
- Typeface.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- AffineTransform3D.cs
- HttpBindingExtension.cs
- TraceListener.cs
- ILGenerator.cs
- SkewTransform.cs
- ColumnMapVisitor.cs
- DescendantOverDescendantQuery.cs
- LogLogRecord.cs
- ListViewGroupItemCollection.cs
- TreeNodeCollection.cs
- CompModSwitches.cs
- CharacterMetricsDictionary.cs
- ProvidersHelper.cs
- BuildManagerHost.cs
- RawTextInputReport.cs
- _ProxyRegBlob.cs
- ErrorEventArgs.cs
- BigInt.cs
- AspCompat.cs
- Size3DConverter.cs
- Documentation.cs
- xamlnodes.cs
- ScriptReferenceBase.cs
- MsmqBindingFilter.cs
- DeploymentSectionCache.cs
- BitmapEffectGroup.cs
- NegotiateStream.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- ButtonBaseAutomationPeer.cs
- MobileFormsAuthentication.cs
- PaintEvent.cs
- RightsManagementInformation.cs
- MultiplexingFormatMapping.cs
- BuiltInPermissionSets.cs
- TextContainerChangedEventArgs.cs
- COSERVERINFO.cs
- PropertyNames.cs
- OletxDependentTransaction.cs
- XmlSchemaSimpleContentRestriction.cs
- Bitmap.cs
- WsdlBuildProvider.cs
- XamlFigureLengthSerializer.cs
- BooleanAnimationUsingKeyFrames.cs
- WebBrowserDesigner.cs
- SecurityAccessDeniedException.cs
- COM2IDispatchConverter.cs
- CacheChildrenQuery.cs
- WebRequestModuleElement.cs
- ZipIOLocalFileDataDescriptor.cs
- SequenceDesignerAccessibleObject.cs
- PageVisual.cs
- ToolStripPanelCell.cs
- ListDataHelper.cs
- BitmapDecoder.cs
- ConstantSlot.cs
- CFGGrammar.cs
- ObjectDataSourceSelectingEventArgs.cs
- GcHandle.cs
- ComplusEndpointConfigContainer.cs
- EncodingDataItem.cs
- UInt32.cs
- ArglessEventHandlerProxy.cs
- RepeaterCommandEventArgs.cs
- ManagementQuery.cs
- FontDialog.cs
- UrlPath.cs
- XmlDataSourceNodeDescriptor.cs
- WindowsGraphicsWrapper.cs
- EdmConstants.cs
- LayoutDump.cs
- TypefaceMetricsCache.cs
- FrameworkContextData.cs
- BufferedReceiveElement.cs
- TableRow.cs
- ZoomPercentageConverter.cs
- QuestionEventArgs.cs
- OleDbConnectionInternal.cs
- OptimisticConcurrencyException.cs
- ConfigsHelper.cs
- NTAccount.cs
- TaskHelper.cs
- GPStream.cs
- JsonXmlDataContract.cs
- XPathNavigatorKeyComparer.cs
- DataBoundLiteralControl.cs
- DataGridViewTopLeftHeaderCell.cs
- Partitioner.cs
- EncryptedData.cs
- XmlNodeChangedEventManager.cs
- ParameterBinding.cs
- DocumentViewerHelper.cs
- TableLayoutPanel.cs