Aardvark.Base


Euclidean3d

Represents a Rigid Transformation (or Rigid Body Transformation) in 3D that is composed of a 3D rotation Rot and a subsequent translation by a 3D vector Trans. This is also called an Euclidean Transformation and is a length preserving Transformation.

Constructors

ConstructorDescription
new(rot, trans)
Signature: (rot:Rot3d * trans:V3d) -> unit

Creates a rigid transformation from a rotation and a (subsequent) translation .

new(rot, trans, epsilon)
Signature: (rot:M33d * trans:V3d * epsilon:float) -> unit

Creates a rigid transformation from a rotation matrix and a (subsequent) translation .

new(m, epsilon)
Signature: (m:M44d * epsilon:float) -> unit

Creates a rigid transformation from a matrix .

new(trafo, epsilon)
Signature: (trafo:Trafo3d * epsilon:float) -> unit

Creates a rigid transformation from a trafo .

Instance members

Instance memberDescription
Equals(other)
Signature: other:obj -> bool
Modifiers: abstract
GetHashCode()
Signature: unit -> int
Modifiers: abstract
Inverse
Signature: Euclidean3d

Gets the (multiplicative) inverse of this Euclidean transformation. [Rot^T,-Rot^T Trans]

Invert()
Signature: unit -> unit

Inverts this rigid transformation (multiplicative inverse). this = [Rot^T,-Rot^T Trans]

InvTransformDir(v)
Signature: v:V3d -> V3d

Transforms direction vector v (v.w is presumed 0.0) by the inverse of this rigid transformation. Actually, only the rotation is used.

InvTransformPos(p)
Signature: p:V3d -> V3d

Transforms point p (p.w is presumed 1.0) by the inverse of this rigid transformation.

IsInvalid
Signature: bool
Modifiers: abstract
IsValid
Signature: bool
Modifiers: abstract
Normalize()
Signature: unit -> unit

Normalizes the rotation quaternion.

Normalized
Signature: Euclidean3d

Returns a new version of this Euclidean transformation with a normalized rotation quaternion.

ToString()
Signature: unit -> string
Modifiers: abstract
TransformDir(v)
Signature: v:V3d -> V3d

Transforms direction vector v (v.w is presumed 0.0) by this rigid transformation. Actually, only the rotation is used.

Transformed(t)
Signature: t:Similarity3d -> Euclidean3d

Returns a new Euclidean transformation by transforming this by a t. Note: This is not a concatenation. t is fully applied to the Translation and Rotation, but the scale is not reflected in the resulting Euclidean transformation.

TransformPos(p)
Signature: p:V3d -> V3d

Transforms point p (p.w is presumed 1.0) by this rigid transformation.

Static members

Static memberDescription
ApproxEqual(r0, r1)
Signature: (r0:Euclidean3d * r1:Euclidean3d) -> bool
ApproxEqual(r0, r1, angleTol, posTol)
Signature: (r0:Euclidean3d * r1:Euclidean3d * angleTol:float * posTol:float) -> bool
InvTransformDir(r, v)
Signature: (r:Euclidean3d * v:V3d) -> V3d

Transforms direction vector v (v.w is presumed 0.0) by the inverse of the rigid transformation r. Actually, only the rotation is used.

InvTransformPos(r, p)
Signature: (r:Euclidean3d * p:V3d) -> V3d

Transforms point p (p.w is presumed 1.0) by the inverse of the rigid transformation r.

Multiply(a, b)
Signature: (a:Euclidean3d * b:Euclidean3d) -> Euclidean3d

Multiplies 2 Euclidean transformations. This concatenates the two rigid transformations into a single one, first b is applied, then a. Attention: Multiplication is NOT commutative!

Multiply(m, r)
Signature: (m:M33d * r:Euclidean3d) -> M34d
op_Equality(r0, r1)
Signature: (r0:Euclidean3d * r1:Euclidean3d) -> bool
op_Explicit(r)
Signature: r:Euclidean3d -> M34d
op_Explicit(r)
Signature: r:Euclidean3d -> M44d
op_Explicit(r)
Signature: r:Euclidean3d -> Similarity3d
op_Inequality(r0, r1)
Signature: (r0:Euclidean3d * r1:Euclidean3d) -> bool
op_Multiply(a, b)
Signature: (a:Euclidean3d * b:Euclidean3d) -> Euclidean3d
op_Multiply(r, m)
Signature: (r:Euclidean3d * m:Shift3d) -> M34d
op_Multiply(m, r)
Signature: (m:M33d * r:Euclidean3d) -> M34d
Parse(s)
Signature: s:string -> Euclidean3d
TransformDir(r, v)
Signature: (r:Euclidean3d * v:V3d) -> V3d

Transforms direction vector v (v.w is presumed 0.0) by rigid transformation r. Actually, only the rotation is used.

Transformed(self, t)
Signature: (self:Euclidean3d * t:Similarity3d) -> Euclidean3d

Returns a new Euclidean transformation by transforming self by a Trafo t. Note: This is not a concatenation. t is fully applied to the Translation and Rotation, but the scale is not reflected in the resulting Euclidean transformation.

TransformPos(r, p)
Signature: (r:Euclidean3d * p:V3d) -> V3d

Transforms point p (p.w is presumed 1.0) by rigid transformation r.

Fork me on GitHub