Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media3D / ProjectionCamera.cs / 1305600 / 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
- DocumentSequenceHighlightLayer.cs
- ListViewItemSelectionChangedEvent.cs
- AddInStore.cs
- BinaryMethodMessage.cs
- NetworkCredential.cs
- PrinterSettings.cs
- StickyNote.cs
- DomainUpDown.cs
- Schema.cs
- LambdaCompiler.cs
- DragDeltaEventArgs.cs
- XmlPreloadedResolver.cs
- ToolboxDataAttribute.cs
- HwndProxyElementProvider.cs
- TagPrefixInfo.cs
- ObjectConverter.cs
- SqlXml.cs
- FileRegion.cs
- SchemaTypeEmitter.cs
- ListGeneralPage.cs
- TypeExtensionSerializer.cs
- RestHandlerFactory.cs
- ProfileSettingsCollection.cs
- DESCryptoServiceProvider.cs
- GZipStream.cs
- CLRBindingWorker.cs
- FontCacheUtil.cs
- HtmlWindow.cs
- CodeCastExpression.cs
- SerializationSectionGroup.cs
- EngineSite.cs
- AppDomainGrammarProxy.cs
- TypeBuilder.cs
- UserUseLicenseDictionaryLoader.cs
- EmptyStringExpandableObjectConverter.cs
- ProviderBase.cs
- MsmqEncryptionAlgorithm.cs
- InternalBufferOverflowException.cs
- WpfPayload.cs
- TextCompositionEventArgs.cs
- ConfigurationSectionHelper.cs
- BaseUriHelper.cs
- PlaceHolder.cs
- XmlDocumentViewSchema.cs
- MimeMapping.cs
- RtfControlWordInfo.cs
- RowCache.cs
- ApplicationCommands.cs
- PackageDigitalSignature.cs
- GPRECT.cs
- SynchronizationScope.cs
- BinaryObjectReader.cs
- SimpleHandlerFactory.cs
- ObjectItemAssemblyLoader.cs
- ColumnCollection.cs
- ScheduleChanges.cs
- XmlSchemaDatatype.cs
- PointUtil.cs
- LinkClickEvent.cs
- CacheHelper.cs
- BlurBitmapEffect.cs
- SemaphoreFullException.cs
- DbProviderFactoriesConfigurationHandler.cs
- TypeListConverter.cs
- ObjectComplexPropertyMapping.cs
- ObjectPersistData.cs
- AttributeData.cs
- KeyTime.cs
- ImageCollectionCodeDomSerializer.cs
- OdbcEnvironment.cs
- PropertyDescriptorGridEntry.cs
- NumberAction.cs
- SqlDuplicator.cs
- ChtmlLinkAdapter.cs
- X509CertificateClaimSet.cs
- dsa.cs
- ToolStripControlHost.cs
- ExtensionDataReader.cs
- RuntimeConfigLKG.cs
- AxHost.cs
- RayMeshGeometry3DHitTestResult.cs
- Table.cs
- QueryGenerator.cs
- EditorPart.cs
- Table.cs
- InsufficientMemoryException.cs
- AccessText.cs
- DoubleLink.cs
- TextRunCacheImp.cs
- StreamAsIStream.cs
- WindowsFormsSectionHandler.cs
- InputDevice.cs
- TableRowCollection.cs
- ObjectDisposedException.cs
- Parsers.cs
- SecurityTokenException.cs
- RecordsAffectedEventArgs.cs
- AccessViolationException.cs
- ViewStateModeByIdAttribute.cs
- DiscoveryUtility.cs