Skip to content
shBLOCK edited this page Oct 3, 2023 · 11 revisions

Vector

Since the 6 vector classes are mostly similar, Vec3 is used in this part of the documentation, and methods specific to a class are particularized.

Instantiation

  • Vec3() returns Vec3(0.0, 0.0, 0.0)
  • Vec3(x: float | int, y: float | int, z: float | int) returns Vec3(x, y, z)
  • Vec3(vec: Vec3) returns a copy of that vector
  • Vec3(vec: Vec3i) converts Vec3i to Vec3
  • Any combination of vectors and numbers that has 3 dimensions in total is also supported, however this doesn't include vector classes of a different data type.
    • Vec3(a: Vec2, b: float | int)
    • Vec3(a: float | int, b: Vec2)

Properties

  • x y z
  • length the length of the vector
  • length_sqr the squared length of the vector
  • normalized the normalized vector
  • "Swizzling" is supported, so any combinations of x y z o l are properties of the vector.
    • These properties return a vector of the length of the property's name.
    • x y z represents the components of this vector.
    • o represents zero and l represents one.
    • Combinations consisting of only constants (o and l) are not included.
    • Examples (Assume that vec = Vec3(2, 3, 4)):
      • vec.xyz gives Vec3(4.0, 3.0, 2.0)
      • vec.zx gives Vec2(4.0, 2.0)
      • vec.xxxx gives Vec4(2.0, 2.0, 2.0, 2.0)
      • vec.xoly gives Vec4(2.0, 0.0, 1.0, 4.0)

Operations

We use a and b to represent vectors in this part.

  • a + b
  • a - b
  • a * b multiplied each component of a and b together
  • a / b divide each component of a by b
  • +a returns a copy of a
  • -a returns the inverse vector of a
  • a == b a != b check for exact equality
  • a.is_close(b, rel_tol=1e-5, abs_tol=1e-14) check for equality with tolerance (similar to math.isclose())
  • bool(a) returns True if a is NOT a zero vector, False otherwise
Clone this wiki locally