package gg

  1. Overview
  2. Docs

Module Gg.V3Source

3D vectors.

Sourcetype t = v3

The type for 3D vectors.

Sourceval dim : int

dim is the dimension of vectors of type v3.

Sourcetype m = m3

The type for matrices representing linear transformations of 3D space.

Constructors, accessors and constants

Sourceval v : float -> float -> float -> v3

v x y z is the vector (x y z).

Sourceval comp : int -> v3 -> float

comp i v is vi, the ith component of v.

Raises Invalid_argument if i is not in [0;dim[.

Sourceval x : v3 -> float

x v is the x component of v.

Sourceval y : v3 -> float

y v is the y component of v.

Sourceval z : v3 -> float

z v is the z component of v.

Sourceval ox : v3

ox is the unit vector (1. 0. 0.).

Sourceval oy : v3

oy is the unit vector (0. 1. 0.).

Sourceval oz : v3

oz is the unit vector (0. 0. 1.).

Sourceval zero : v3

zero is the neutral element for add.

Sourceval infinity : v3

infinity is the vector whose components are infinity.

Sourceval neg_infinity : v3

neg_infinity is the vector whose components are neg_infinity.

Sourceval basis : int -> v3

basis i is the ith vector of an orthonormal basis of the vector space t with inner product dot.

Raises Invalid_argument if i is not in [0;dim[.

Sourceval of_tuple : (float * float * float) -> v3

of_tuple (x, y, z) is v x y z.

Sourceval to_tuple : v3 -> float * float * float

to_tuple v is (x v, y v, z v).

Sourceval of_spherical : v3 -> v3

of_spherical sv is the vector whose cartesian coordinates (x, y, z) correspond to the radial, azimuth angle and zenith angle spherical coordinates (r, theta, phi) given by (V3.x sv, V2.y sv, V3.z sv).

Sourceval to_spherical : v3 -> v3

to_spherical v is the vector whose coordinate (r, theta, phi) are the radial, azimuth angle and zenith angle spherical coordinates of v. theta is in [-pi;pi] and phi in [0;pi].

Sourceval of_v2 : v2 -> z:float -> v3

of_v2 u z is v (V2.x u) (V2.y u) z.

Sourceval of_v4 : v4 -> v3

of_v4 u z is v (V4.x u) (V4.y u) (V4.z u).

Functions

Sourceval neg : v3 -> v3

neg v is the inverse vector -v.

Sourceval add : v3 -> v3 -> v3

add u v is the vector addition u + v.

Sourceval sub : v3 -> v3 -> v3

sub u v is the vector subtraction u - v.

Sourceval mul : v3 -> v3 -> v3

mul u v is the component wise multiplication u * v.

Sourceval div : v3 -> v3 -> v3

div u v is the component wise division u / v.

Sourceval smul : float -> v3 -> v3

smul s v is the scalar multiplication sv.

Sourceval half : v3 -> v3

half v is the half vector smul 0.5 v.

Sourceval cross : v3 -> v3 -> v3

cross u v is the cross product u x v.

Sourceval dot : v3 -> v3 -> float

dot u v is the dot product u.v.

Sourceval norm : v3 -> float

norm v is the norm |v| = sqrt v.v.

Sourceval norm2 : v3 -> float

norm2 v is the squared norm |v|2 .

Sourceval unit : v3 -> v3

unit v is the unit vector v/|v|.

Sourceval spherical : float -> float -> float -> v3

spherical r theta phi is of_spherical (V3.v r theta phi).

Sourceval azimuth : v3 -> float

azimuth v is the azimuth angle spherical coordinates of v. The result is in [-pi;pi].

Sourceval zenith : v3 -> float

zenith v is the zenith angle spherical coordinates of v. The result is in [0;pi].

Sourceval homogene : v3 -> v3

homogene v is the vector v/vz if vz <> 0 and v otherwise.

Sourceval mix : v3 -> v3 -> float -> v3

mix u v t is the linear interpolation u + t(v - u).

Sourceval ltr : m3 -> v3 -> v3

ltr m v is the linear transform mv.

Sourceval tr : m4 -> v3 -> v3

tr m v is the affine transform in homogenous 3D space of the vector v by m.

Note. Since m is supposed to be affine the function ignores the last row of m. v is treated as a vector (infinite point, its last coordinate in homogenous space is 0) and is thus translationally invariant. Use P3.tr to transform finite points.

Overridden Stdlib operators

Sourceval (+) : v3 -> v3 -> v3

u + v is add u v.

Sourceval (-) : v3 -> v3 -> v3

u - v is sub u v.

Sourceval (*) : float -> v3 -> v3

t * v is smul t v.

Sourceval (/) : v3 -> float -> v3

v / t is smul (1. /. t) v.

Traversal

Sourceval map : (float -> float) -> v3 -> v3

map f v is the component wise application of f to v.

Sourceval mapi : (int -> float -> float) -> v3 -> v3

mapi f v is like map but the component index is also given.

Sourceval fold : ('a -> float -> 'a) -> 'a -> v3 -> 'a

fold f acc v is f (...(f (f acc v0) v1)...).

Sourceval foldi : ('a -> int -> float -> 'a) -> 'a -> v3 -> 'a

foldi f acc v is f (...(f (f acc 0 v0) 1 v1)...).

Sourceval iter : (float -> unit) -> v3 -> unit

iter f v is f v0; f v1; ...

Sourceval iteri : (int -> float -> unit) -> v3 -> unit

iteri f v is f 0 v0; f 1 v1; ...

Predicates and comparisons

Sourceval for_all : (float -> bool) -> v3 -> bool

for_all p v is p v0 && p v1 && ...

Sourceval exists : (float -> bool) -> v3 -> bool

exists p v is p v0 || p v1 || ...

Sourceval equal : v3 -> v3 -> bool

equal u v is u = v.

Sourceval equal_f : (float -> float -> bool) -> v3 -> v3 -> bool

equal_f eq u v tests u and v like equal but uses eq to test floating point values.

Sourceval compare : v3 -> v3 -> int

compare u v is Stdlib.compare u v.

Sourceval compare_f : (float -> float -> int) -> v3 -> v3 -> int

compare_f cmp u v compares u and v like compare but uses cmp to compare floating point values.

Formatters

Sourceval pp : Format.formatter -> v3 -> unit

pp ppf v prints a textual representation of v on ppf.

Sourceval pp_f : (Format.formatter -> float -> unit) -> Format.formatter -> v3 -> unit

pp_f pp_comp ppf v prints v like pp but uses pp_comp to print floating point values.