Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / 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.
//----------------------------------------------------------------------------
//
//
// 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
- ImageSourceConverter.cs
- DesignTimeVisibleAttribute.cs
- SqlHelper.cs
- ModelPerspective.cs
- ObservableCollection.cs
- ProcessModule.cs
- XamlTypeWithExplicitNamespace.cs
- CodeAssignStatement.cs
- Util.cs
- login.cs
- StrokeNodeEnumerator.cs
- DataGridHeaderBorder.cs
- FixedDSBuilder.cs
- StorageInfo.cs
- XPathDescendantIterator.cs
- BitStream.cs
- CompilerParameters.cs
- CollectionViewGroup.cs
- ProvidersHelper.cs
- Thread.cs
- ContentType.cs
- FactoryGenerator.cs
- HtmlAnchor.cs
- CodeSubDirectoriesCollection.cs
- BridgeDataReader.cs
- InternalPolicyElement.cs
- SliderAutomationPeer.cs
- GridViewSelectEventArgs.cs
- XamlTreeBuilderBamlRecordWriter.cs
- TextBoxBase.cs
- ContainerSelectorActiveEvent.cs
- OdbcConnectionString.cs
- TableCell.cs
- ButtonBase.cs
- ManageRequest.cs
- ComponentGuaranteesAttribute.cs
- Line.cs
- OdbcCommandBuilder.cs
- ObjectSpanRewriter.cs
- LinqDataSourceContextEventArgs.cs
- QilStrConcatenator.cs
- StructuralCache.cs
- ServiceObjectContainer.cs
- CounterNameConverter.cs
- MemberDomainMap.cs
- ThicknessConverter.cs
- BufferModesCollection.cs
- ContractComponent.cs
- QueryResponse.cs
- RSAPKCS1SignatureDeformatter.cs
- Journaling.cs
- KeyInfo.cs
- RectangleConverter.cs
- StreamHelper.cs
- ReadOnlyState.cs
- PngBitmapDecoder.cs
- SmiConnection.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- RowToFieldTransformer.cs
- DiscoveryClientProtocol.cs
- PlatformCulture.cs
- DbMetaDataCollectionNames.cs
- WSHttpBindingElement.cs
- MobileContainerDesigner.cs
- NotifyParentPropertyAttribute.cs
- hwndwrapper.cs
- ConfigDefinitionUpdates.cs
- DbProviderFactory.cs
- PanelStyle.cs
- TreeNodeBindingCollection.cs
- WebRequestModuleElementCollection.cs
- OperationCanceledException.cs
- DataBoundControlHelper.cs
- ListGeneralPage.cs
- HttpCachePolicy.cs
- BitStack.cs
- MessageEnumerator.cs
- ServicePerformanceCounters.cs
- EventLogPermissionAttribute.cs
- SchemaElementDecl.cs
- ByteViewer.cs
- SettingsContext.cs
- dsa.cs
- ClientTarget.cs
- RemoteWebConfigurationHost.cs
- TouchEventArgs.cs
- SHA256Managed.cs
- ButtonRenderer.cs
- WindowsFormsHelpers.cs
- TextComposition.cs
- CompileLiteralTextParser.cs
- BinaryNode.cs
- SqlConnectionPoolGroupProviderInfo.cs
- ContextMenuStrip.cs
- RIPEMD160Managed.cs
- CollectionBuilder.cs
- DispatcherOperation.cs
- ButtonBase.cs
- ThreadSafeMessageFilterTable.cs
- SafeRightsManagementQueryHandle.cs