Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- ServiceDurableInstanceContextProvider.cs
- _LoggingObject.cs
- RelatedImageListAttribute.cs
- QueryStringHandler.cs
- BrowserCapabilitiesFactoryBase.cs
- CounterNameConverter.cs
- FaultBookmark.cs
- ErrorReporting.cs
- StringFunctions.cs
- Operand.cs
- _TLSstream.cs
- Activator.cs
- OdbcDataReader.cs
- CellQuery.cs
- MappingSource.cs
- ContentPropertyAttribute.cs
- ReadOnlyCollectionBase.cs
- CircleHotSpot.cs
- ContourSegment.cs
- CheckBoxBaseAdapter.cs
- CodePrimitiveExpression.cs
- SimpleFieldTemplateUserControl.cs
- MachinePropertyVariants.cs
- FixedFindEngine.cs
- SerialReceived.cs
- WindowsContainer.cs
- RuntimeResourceSet.cs
- WebHeaderCollection.cs
- TypeConverter.cs
- ToolStripDropDownButton.cs
- FormsAuthenticationUserCollection.cs
- TableCellCollection.cs
- RuntimeConfig.cs
- EpmContentSerializer.cs
- WebErrorHandler.cs
- SimpleBitVector32.cs
- NullableBoolConverter.cs
- ImageConverter.cs
- Logging.cs
- HttpProcessUtility.cs
- Timeline.cs
- ExitEventArgs.cs
- ColorDialog.cs
- TemplatePartAttribute.cs
- DbMetaDataColumnNames.cs
- ObjectQuery_EntitySqlExtensions.cs
- ImageFormat.cs
- ListCollectionView.cs
- MessagePropertyAttribute.cs
- oledbmetadatacollectionnames.cs
- SecureUICommand.cs
- SatelliteContractVersionAttribute.cs
- AuthenticateEventArgs.cs
- WebPartConnectionsDisconnectVerb.cs
- DataKey.cs
- TopClause.cs
- WinFormsUtils.cs
- MimeTextImporter.cs
- SqlConnectionPoolGroupProviderInfo.cs
- TypeBuilderInstantiation.cs
- StatusBarAutomationPeer.cs
- MemberCollection.cs
- HttpCookiesSection.cs
- LifetimeMonitor.cs
- TextBlock.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- DataControlCommands.cs
- StyleSelector.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- Msmq4PoisonHandler.cs
- Int32CAMarshaler.cs
- StdValidatorsAndConverters.cs
- RoutingTable.cs
- ChannelPool.cs
- TrimSurroundingWhitespaceAttribute.cs
- KernelTypeValidation.cs
- DecimalAnimation.cs
- OutKeywords.cs
- FillErrorEventArgs.cs
- FormsAuthentication.cs
- SelectionRange.cs
- ViewStateException.cs
- SqlFileStream.cs
- ParameterCollection.cs
- PerformanceCounterCategory.cs
- ToolStripEditorManager.cs
- DebugController.cs
- HttpRuntime.cs
- EdmConstants.cs
- ContextConfiguration.cs
- TreePrinter.cs
- MenuTracker.cs
- RuleSettings.cs
- WebFaultClientMessageInspector.cs
- FontConverter.cs
- OleAutBinder.cs
- PersonalizationProviderHelper.cs
- cookiecollection.cs
- NotCondition.cs
- SoapReflectionImporter.cs