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
- ServiceContractGenerator.cs
- XmlProcessingInstruction.cs
- StorageConditionPropertyMapping.cs
- FontCollection.cs
- GlobalEventManager.cs
- CancellationState.cs
- PrintingPermissionAttribute.cs
- DataGridrowEditEndingEventArgs.cs
- DecimalConstantAttribute.cs
- SQLChars.cs
- XmlMemberMapping.cs
- ClientConfigurationHost.cs
- WebPartUtil.cs
- UpWmlMobileTextWriter.cs
- TabPanel.cs
- BooleanKeyFrameCollection.cs
- TableLayoutPanelCellPosition.cs
- StringInfo.cs
- DateTimeStorage.cs
- ContentFilePart.cs
- RankException.cs
- DesignTimeVisibleAttribute.cs
- TreeNodeEventArgs.cs
- EntityViewContainer.cs
- Menu.cs
- PassportAuthenticationEventArgs.cs
- RemotingConfigParser.cs
- SchemaLookupTable.cs
- Compilation.cs
- HwndKeyboardInputProvider.cs
- XmlExceptionHelper.cs
- NamedPipeProcessProtocolHandler.cs
- ServiceManagerHandle.cs
- BrowserCapabilitiesFactoryBase.cs
- Claim.cs
- TextBoxAutoCompleteSourceConverter.cs
- BrowserDefinition.cs
- SQLInt64Storage.cs
- LateBoundChannelParameterCollection.cs
- DrawListViewSubItemEventArgs.cs
- TextSegment.cs
- FilteredDataSetHelper.cs
- xml.cs
- TrustManagerMoreInformation.cs
- RestHandler.cs
- PagesChangedEventArgs.cs
- WebPartCollection.cs
- IndexedDataBuffer.cs
- WriteableOnDemandPackagePart.cs
- LocalServiceSecuritySettingsElement.cs
- DataGridViewCellLinkedList.cs
- Utils.cs
- FormatConvertedBitmap.cs
- SiteOfOriginContainer.cs
- WindowAutomationPeer.cs
- ObservableCollection.cs
- DescendantQuery.cs
- TreeViewImageGenerator.cs
- BaseTemplateParser.cs
- FormViewRow.cs
- PolicyReader.cs
- FixedTextView.cs
- SiteMapPath.cs
- HeaderUtility.cs
- DefaultEventAttribute.cs
- ProjectionAnalyzer.cs
- ExceptionRoutedEventArgs.cs
- TextSelectionHelper.cs
- dataprotectionpermission.cs
- CodeConstructor.cs
- SecuritySessionSecurityTokenProvider.cs
- ImageIndexEditor.cs
- DocumentReferenceCollection.cs
- SqlUserDefinedTypeAttribute.cs
- UserMapPath.cs
- Privilege.cs
- PageBuildProvider.cs
- GroupItemAutomationPeer.cs
- PostBackOptions.cs
- TemplateContent.cs
- CellRelation.cs
- KeyValuePairs.cs
- TextEditorMouse.cs
- TreeViewDesigner.cs
- CodeBlockBuilder.cs
- SurrogateEncoder.cs
- SerializerDescriptor.cs
- QilChoice.cs
- SwitchElementsCollection.cs
- SerialReceived.cs
- DataKeyArray.cs
- ArcSegment.cs
- NotCondition.cs
- ImageSource.cs
- EntityDataSourceUtil.cs
- ValueTable.cs
- SqlDependencyUtils.cs
- ViewStateException.cs
- DeferredTextReference.cs
- AnimatedTypeHelpers.cs