Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media3D / ProjectionCamera.cs / 1 / ProjectionCamera.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//---------------------------------------------------------------------------
using System;
namespace System.Windows.Media.Media3D
{
///
/// The ProjectionCamera is an abstract base class from cameras
/// constructed from well-understand parameers such as Position,
/// LookAtPoint, and Up.
///
public abstract partial class ProjectionCamera : Camera
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
///
/// Prevent 3rd parties from extending this abstract base class.
///
internal ProjectionCamera()
{
}
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
//------------------------------------------------------
//
// Public Properties
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Public Events
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
internal override Matrix3D GetViewMatrix()
{
Point3D position = Position;
Vector3D lookDirection = LookDirection;
Vector3D upDirection = UpDirection;
return CreateViewMatrix(Transform, ref position, ref lookDirection, ref upDirection);
}
// Transfrom that moves the world to a camera coordinate system
// where the camera is at the origin looking down the negative z
// axis and y is up.
//
// NOTE: We consider camera.Transform to be part of the view matrix.
//
internal static Matrix3D CreateViewMatrix(Transform3D transform, ref Point3D position, ref Vector3D lookDirection, ref Vector3D upDirection)
{
Vector3D zaxis = -lookDirection;
zaxis.Normalize();
Vector3D xaxis = Vector3D.CrossProduct(upDirection, zaxis);
xaxis.Normalize();
Vector3D yaxis = Vector3D.CrossProduct(zaxis, xaxis);
Vector3D positionVec = (Vector3D) position;
double cx = -Vector3D.DotProduct(xaxis, positionVec);
double cy = -Vector3D.DotProduct(yaxis, positionVec);
double cz = -Vector3D.DotProduct(zaxis, positionVec);
Matrix3D viewMatrix = new Matrix3D(
xaxis.X, yaxis.X, zaxis.X, 0,
xaxis.Y, yaxis.Y, zaxis.Y, 0,
xaxis.Z, yaxis.Z, zaxis.Z, 0,
cx, cy, cz, 1);
PrependInverseTransform(transform, ref viewMatrix);
return viewMatrix;
}
#endregion Internal Methods
//-----------------------------------------------------
//
// 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
- ControlIdConverter.cs
- CompositeControl.cs
- WindowsFormsLinkLabel.cs
- TransportSecurityBindingElement.cs
- CustomAttributeSerializer.cs
- PeerNameRecordCollection.cs
- JsonDeserializer.cs
- XmlSchemaAnyAttribute.cs
- HtmlInputCheckBox.cs
- Utils.cs
- SqlNamer.cs
- WmpBitmapEncoder.cs
- SqlDataRecord.cs
- FileChangesMonitor.cs
- ControlCodeDomSerializer.cs
- ConvertBinder.cs
- XhtmlBasicImageAdapter.cs
- DataGridViewDataErrorEventArgs.cs
- RecognizerStateChangedEventArgs.cs
- SharedUtils.cs
- EditorZone.cs
- DataGridViewColumn.cs
- ScriptResourceAttribute.cs
- SafeNativeMethods.cs
- CompatibleIComparer.cs
- OracleDataReader.cs
- CapacityStreamGeometryContext.cs
- arabicshape.cs
- CodeEntryPointMethod.cs
- NonceCache.cs
- CompilationUtil.cs
- PageAsyncTask.cs
- ToolStripContextMenu.cs
- oledbmetadatacolumnnames.cs
- NavigationFailedEventArgs.cs
- ExtendedProtectionPolicyElement.cs
- AlgoModule.cs
- WindowsIPAddress.cs
- WebPartCatalogCloseVerb.cs
- ValidationManager.cs
- Base64Encoder.cs
- UInt32.cs
- DeferrableContentConverter.cs
- FlowLayout.cs
- BasicHttpBinding.cs
- ParallelDesigner.xaml.cs
- CompositionTarget.cs
- CodeNamespaceCollection.cs
- MenuItemStyleCollectionEditor.cs
- LoadItemsEventArgs.cs
- Bold.cs
- ExpressionTable.cs
- TableStyle.cs
- SystemIPInterfaceStatistics.cs
- HybridDictionary.cs
- Calendar.cs
- Int32Collection.cs
- EntityDataSourceView.cs
- ButtonFlatAdapter.cs
- FloaterParaClient.cs
- ConnectionManagementElementCollection.cs
- DesignBindingEditor.cs
- SettingsBindableAttribute.cs
- WebExceptionStatus.cs
- StrokeCollection2.cs
- CreateRefExpr.cs
- AssertFilter.cs
- ZoneIdentityPermission.cs
- FloaterParaClient.cs
- DataGridRow.cs
- ArrayExtension.cs
- ConstraintStruct.cs
- CacheModeConverter.cs
- ConfigurationLockCollection.cs
- EntityChangedParams.cs
- CheckedPointers.cs
- LogReserveAndAppendState.cs
- ListenDesigner.cs
- EncodingTable.cs
- VirtualStackFrame.cs
- TypeDelegator.cs
- RelatedView.cs
- ItemMap.cs
- FtpCachePolicyElement.cs
- CompareValidator.cs
- SendActivity.cs
- FromReply.cs
- ConfigXmlAttribute.cs
- DSACryptoServiceProvider.cs
- PostBackTrigger.cs
- EnlistmentState.cs
- InvalidComObjectException.cs
- StaticContext.cs
- XsdDuration.cs
- ContainerUtilities.cs
- PropertyKey.cs
- StorageEntityContainerMapping.cs
- AnimationClockResource.cs
- GPPOINT.cs
- ErrorFormatter.cs