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
- Debug.cs
- SqlTriggerAttribute.cs
- DiscoveryClientDocuments.cs
- CallContext.cs
- ToolStripButton.cs
- TcpStreams.cs
- SourceSwitch.cs
- SerializerWriterEventHandlers.cs
- TextUtf8RawTextWriter.cs
- TopClause.cs
- ExclusiveCanonicalizationTransform.cs
- JoinGraph.cs
- AspProxy.cs
- DecimalStorage.cs
- AuthorizationRuleCollection.cs
- XmlUtil.cs
- Mappings.cs
- MachineKeySection.cs
- Point3DCollectionValueSerializer.cs
- MultiView.cs
- ColorConverter.cs
- RuntimeResourceSet.cs
- StrokeCollection2.cs
- MailDefinition.cs
- MsdtcWrapper.cs
- WebAdminConfigurationHelper.cs
- XmlTextReaderImplHelpers.cs
- HttpPostServerProtocol.cs
- StringReader.cs
- CachedFontFamily.cs
- xsdvalidator.cs
- MembershipSection.cs
- ListViewTableCell.cs
- HtmlTable.cs
- _NegotiateClient.cs
- StringSource.cs
- AssociationType.cs
- ResourceDisplayNameAttribute.cs
- AsyncCodeActivity.cs
- CorrelationTokenTypeConvertor.cs
- ThicknessAnimationBase.cs
- IndependentAnimationStorage.cs
- Point3DKeyFrameCollection.cs
- Sql8ExpressionRewriter.cs
- TreeViewCancelEvent.cs
- PointLight.cs
- MeshGeometry3D.cs
- ChangePassword.cs
- SimpleApplicationHost.cs
- DataGridViewCellPaintingEventArgs.cs
- SmtpFailedRecipientsException.cs
- FunctionMappingTranslator.cs
- StylusButtonCollection.cs
- LocalValueEnumerator.cs
- ServiceDefaults.cs
- RectAnimationClockResource.cs
- ColumnResult.cs
- RelationshipDetailsRow.cs
- PeerNeighborManager.cs
- PartitionResolver.cs
- SemanticResolver.cs
- TraceEventCache.cs
- TemplateApplicationHelper.cs
- VirtualDirectoryMappingCollection.cs
- RoutedEventConverter.cs
- WebService.cs
- DataSourceHelper.cs
- XmlReturnReader.cs
- DataSourceXmlClassAttribute.cs
- SoapSchemaExporter.cs
- GlobalProxySelection.cs
- SettingsProperty.cs
- DesignColumn.cs
- unsafenativemethodsother.cs
- DataSvcMapFileSerializer.cs
- _SSPIWrapper.cs
- NamespaceEmitter.cs
- CurrencyManager.cs
- TextControl.cs
- Parallel.cs
- WebPartMenu.cs
- DeviceSpecificChoice.cs
- MouseBinding.cs
- EmptyReadOnlyDictionaryInternal.cs
- XmlDownloadManager.cs
- FixUpCollection.cs
- SqlEnums.cs
- Table.cs
- COM2FontConverter.cs
- MissingSatelliteAssemblyException.cs
- DetailsViewPageEventArgs.cs
- ObjectAnimationUsingKeyFrames.cs
- Literal.cs
- AttachedPropertyMethodSelector.cs
- OleDbDataReader.cs
- SmtpReplyReader.cs
- XmlKeywords.cs
- NamespaceCollection.cs
- XmlSchemaSimpleTypeRestriction.cs
- ConfigurationManagerInternalFactory.cs