interface Jitter3dUtilsInterface

Utilities for Jitter 3D manipulations

It is not possible to instantiate this interface directly; it is available globally as a Jitter3DUtils object and methods can be called like Jitter3DUtils.vadd().

Index

Methods

add_quats(q1, q2, q3)

Add three 4D vectors (quaternions)

add_quats(
  q1: Jitter3dUtilsVec4,
  q2: Jitter3dUtilsVec4,
  q3: Jitter3dUtilsVec4,
): void;
NameTypeDescription
q1Jitter3dUtilsVec4first quaternion
q2Jitter3dUtilsVec4second quaternion
q3Jitter3dUtilsVec4third quaternion

axis_to_quat(axis, quat)

Convert an angle/axis rotation to a quaternion

axis_to_quat(axis: Jitter3dUtilsVec3, quat: Jitter3dUtilsVec4): void;
NameTypeDescription
axisJitter3dUtilsVec3axis rotation
quatJitter3dUtilsVec4output quaternion

build_rotmatrix(m, q)

Build a rotation matrix for a given quaternion

build_rotmatrix(m: Jitter3dUtilsVec4, q: Jitter3dUtilsVec4): void;
NameTypeDescription
mJitter3dUtilsVec4rotation matrix
qJitter3dUtilsVec4quaternion

closest_line_sphere(lineA, lineB, center, r, p1)

Set p1 to the point on a sphere closest to a line segment

(x3 - x1)(x2 - x1) + (y3 - y1)(y2 - y1) + (z3 - z1)(z2 - z1)
-----------------------------------------------------------
(x2 - x1)(x2 - x1) + (y2 - y1)(y2 - y1) + (z2 - z1)(z2 - z1)
closest_line_sphere(
  lineA: Jitter3dUtilsVec3,
  lineB: Jitter3dUtilsVec3,
  center: Jitter3dUtilsVec3,
  r: number,
  p1: Jitter3dUtilsVec3,
): void;
NameTypeDescription
lineAJitter3dUtilsVec3first line point
lineBJitter3dUtilsVec3second line point
centerJitter3dUtilsVec3center point
rnumbersphere radius
p1Jitter3dUtilsVec3point to set

intersect_line_quad(lineA, lineB, pos, rot, scale, p1, p2)

Returns whether the ray defined by the line's two points intersect the quad defined by a position, rotation, and scale. Sets p2 to the point of intersection with the quad plane in unit coordinates and sets p1 to the same point in world coordinates.

intersect_line_quad(
  lineA: Jitter3dUtilsVec3,
  lineB: Jitter3dUtilsVec3,
  pos: Jitter3dUtilsVec3,
  rot: Jitter3dUtilsVec3,
  scale: Jitter3dUtilsVec3,
  p1: Jitter3dUtilsVec3,
  p2: Jitter3dUtilsVec3,
): boolean;
NameTypeDescription
lineAJitter3dUtilsVec3first line point
lineBJitter3dUtilsVec3second line point
posJitter3dUtilsVec3quad position
rotJitter3dUtilsVec3quad rotation
scaleJitter3dUtilsVec3quad scale
p1Jitter3dUtilsVec3world coordinate intersection point
p2Jitter3dUtilsVec3unit coordinate intersection point
Return Valueboolean

intersect_line_sphere(lineA, lineB, center, r, p1)

Returns whether the ray defined by the line's two points intersect with the sphere of given center and radius. Sets p1 to the closest point of intersection.

intersect_line_sphere(
  lineA: Jitter3dUtilsVec3,
  lineB: Jitter3dUtilsVec3,
  center: Jitter3dUtilsVec3,
  r: number,
  p1: Jitter3dUtilsVec3,
): boolean;
NameTypeDescription
lineAJitter3dUtilsVec3first line point
lineBJitter3dUtilsVec3second line point
centerJitter3dUtilsVec3sphere center
rnumbersphere radius
p1Jitter3dUtilsVec3closest point of intersection
Return Valueboolean

normalize_quat(quat)

Normalize a quaternion

normalize_quat(quat: Jitter3dUtilsVec4): void;
NameTypeDescription
quatJitter3dUtilsVec4a quaternion to normalize

quat_to_axis(quat, axis)

Convert a quaternion to an angle/axis rotation

quat_to_axis(quat: Jitter3dUtilsVec4, axis: Jitter3dUtilsVec3): void;
NameTypeDescription
quatJitter3dUtilsVec4quaternion to convert
axisJitter3dUtilsVec3output angle/axis rotation

transform_point(point, matrix)

transform_point(point: Jitter3dUtilsVec4, matrix: Jitter3dUtilsMat16): void;
NameTypeDescription
pointJitter3dUtilsVec4a point to transform
matrixJitter3dUtilsMat16a 4x4 matrix

vadd(src1, src2, dst)

Add two 3D vectors

vadd(
  src1: Jitter3dUtilsVec3,
  src2: Jitter3dUtilsVec3,
  dst: Jitter3dUtilsVec3,
): void;
NameTypeDescription
src1Jitter3dUtilsVec3first vector
src2Jitter3dUtilsVec3second vector
dstJitter3dUtilsVec3output vector to store sum of src1 + src2

vcopy(v1, v2)

Copy one vector to another

vcopy(v1: Jitter3dUtilsVec3, v2: Jitter3dUtilsVec3): void;
NameTypeDescription
v1Jitter3dUtilsVec3source
v2Jitter3dUtilsVec3destination

vcross(v1, v2, cross)

Calculate the cross product of two 3D vectors

vcross(
  v1: Jitter3dUtilsVec3,
  v2: Jitter3dUtilsVec3,
  cross: Jitter3dUtilsVec3,
): void;
NameTypeDescription
v1Jitter3dUtilsVec3first vector
v2Jitter3dUtilsVec3second vector
crossJitter3dUtilsVec3cross product

vdiv(src1, src2, dst)

Divide src1 and src2 (element-wise) and store the result in dst

vdiv(
  src1: Jitter3dUtilsVec3,
  src2: Jitter3dUtilsVec3,
  dst: Jitter3dUtilsVec3,
): void;
NameTypeDescription
src1Jitter3dUtilsVec3first vector
src2Jitter3dUtilsVec3second vector
dstJitter3dUtilsVec3destination vector

vdot(v1, v2)

Calculate the dot product of two 3D vectors

vdot(v1: Jitter3dUtilsVec3, v2: Jitter3dUtilsVec3): number;
NameTypeDescription
v1Jitter3dUtilsVec3first vector
v2Jitter3dUtilsVec3second vector
Return Valuenumber

vlength(v)

Compute the squared distance of a 3D vector

vlength(v: Jitter3dUtilsVec3): number;
NameTypeDescription
vJitter3dUtilsVec3vector
Return Valuenumber

vlength2(v)

A cheaper distance-squared calculation

vlength2(v: Jitter3dUtilsVec3): number;
NameTypeDescription
vJitter3dUtilsVec3vector
Return Valuenumber

vmul(src1, src2, dst)

Multiply src1 and src2 (element-wise) and store the result in dst

vmul(
  src1: Jitter3dUtilsVec3,
  src2: Jitter3dUtilsVec3,
  dst: Jitter3dUtilsVec3,
): void;
NameTypeDescription
src1Jitter3dUtilsVec3first vector
src2Jitter3dUtilsVec3second vector
dstJitter3dUtilsVec3destination vector

vnormal(v)

Normalize a 3D vector

vnormal(v: Jitter3dUtilsVec3): void;
NameTypeDescription
vJitter3dUtilsVec3vector

vscale(v, scale)

Scale a vector

vscale(v: Jitter3dUtilsVec3, scale: number): void;
NameTypeDescription
vJitter3dUtilsVec3vector
scalenumberscale factor

vset(v, x, y, z)

Set the values of a vector

vset(v: Jitter3dUtilsVec3, x: number, y: number, z: number): void;
NameTypeDescription
vJitter3dUtilsVec3vector
xnumbernew x value
ynumbernew y value
znumbernew z value

vsub(src1, src2, dst)

Subtract src2 from src1 and store the result in dst

vsub(
  src1: Jitter3dUtilsVec3,
  src2: Jitter3dUtilsVec3,
  dst: Jitter3dUtilsVec3,
): void;
NameTypeDescription
src1Jitter3dUtilsVec3first vector
src2Jitter3dUtilsVec3second vector
dstJitter3dUtilsVec3destination vector

vzero(v)

Set all elements of a vector to zero

vzero(v: Jitter3dUtilsVec3): void;
NameTypeDescription
vJitter3dUtilsVec3vector

xyz_to_axis(v, axis)

Convert rotation in Euler angles (xyz) to angle/axis rotation

xyz_to_axis(v: Jitter3dUtilsVec3, axis: Jitter3dUtilsVec3): void;
NameTypeDescription
vJitter3dUtilsVec3rotation in Euler angles
axisJitter3dUtilsVec3output angle/axis rotation