Click or drag to resize
DigitalRuneMatrix44DTransformPosition Method
Transforms a position.

Namespace: DigitalRune.Mathematics.Algebra
Assembly: DigitalRune.Mathematics (in DigitalRune.Mathematics.dll) Version: 1.14.0.0 (1.14.0.14427)
Syntax
public Vector3D TransformPosition(
	Vector3D position
)

Parameters

position
Type: DigitalRune.Mathematics.AlgebraVector3D
The position.

Return Value

Type: Vector3D
The transformed position.
Remarks

By using homogeneous coordinates 4 x 4 matrices can be used to define affine transformations or projective transformations in 3D space. When a 3D vector is given, the vector can have multiple meanings.

Position Vectors: A position vector identifies a point in 3D. Use TransformPosition(Vector3D) to transform position vectors. This method interprets the given Vector3D as a vector (x, y, z, 1) in homogeneous coordinates. The position vector is transformed by multiplication with the 4 x 4 matrix.

Direction Vectors: A direction vector (or displacement vector) defines a direction and length in 3D. Use TransformDirection(Vector3D) to transform direction vectors. This method interprets the given Vector3D as a vector (x, y, z, 0) in homogeneous coordinates. The direction vector is transformed by multiplication with the upper, left 3 x 3 corner of the transformation matrix.

Tangent Vectors: A tangent vector (surface tangent) defines a tangential direction at a point on a surface. They can be treated similar to direction vectors. Use TransformDirection(Vector3D) to transform tangent vectors and binormals vectors.

Normal vectors: A normal vector (surface normal) is a vector that is perpendicular to the tangent plane of a given point on a surface. In differential geometry normal vectors are "tangent covectors" or "cotangent vectors". They need to be treated differently than direction vectors or tangent vectors. Use TransformNormal(Vector3D) to transform normal vectors. A normal vector is transformed by multiplication with transpose of the inverse of the upper, left 3 x 3 corner of the transformation matrix.

(Note: If the transformation matrix contains only rotations, translations and uniform scalings then TransformDirection(Vector3D) can be used to transform normal vectors, which is faster.)

See Also