Scad_ml.Vec3
3-dimensional vector type.
In addition to basic math and vector operations, relevant transformation functions (and aliases) are mirroring those found in Scad
are provided. This allows for points in space represented by this type to moved around in a similar fashion to Scad.t
.
include module type of struct include Vec3 end
val zero : t
Zero vector = (0., 0., 0.)
horizontal_op f a b
Hadamard (element-wise) operation between vectors a
and b
using the function f
.
val norm : t -> float
norm t
Calculate the vector norm (a.k.a. magnitude) of t
.
distance a b
Calculate the magnitude of the difference (Hadamard subtraction) between a
and b
.
normalize t
Normalize t
to a vector for which the magnitude is equal to 1. e.g. norm (normalize t) = 1.
Equivalent to those found in Scad
. Quaternion operations are provided when this module is included in Scad_ml
.
rotate r t
Euler (xyz) rotation of t
by the angles in theta
. Equivalent to rotate_x rx t |> rotate_y ry |> rotate_z rz
, where (rx, ry, rz) = r
.
rotate_about_pt r pivot t
Translates t
along the vector pivot
, euler rotating the resulting vector with r
, and finally, moving back along the vector pivot
. Functionally, rotating about the point in space arrived at by the initial translation along the vector pivot
.
mirror ax t
Mirrors t
on a plane through the origin, defined by the normal vector ax
.
val map : (float -> 'b) -> t -> 'b * 'b * 'b
val get_x : t -> float
val get_y : t -> float
val get_z : t -> float
val to_string : t -> string
val to_vec2 : t -> float * float
val of_vec2 : (float * float) -> t
val quaternion : Quaternion.t -> Vec3.t -> Vec3.t
quaternion q t
Rotate t
with the quaternion q
.
val quaternion_about_pt : Quaternion.t -> Vec3.t -> Vec3.t -> Vec3.t
quaternion_about_pt q p t
Translates t
along the vector p
, rotating the resulting vector with the quaternion q
, and finally, moving back along the vector p
. Functionally, rotating about the point in space arrived at by the initial translation along the vector p
.