docs / stdlib / math

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

codec

  1. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. FiberLocal
  5. Lock
  6. Mutex
  7. RwLock
  8. Semaphore
  9. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. RecoverableException
  4. Throwable
  5. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. Blake3
  2. DefaultHasher
  3. Hash
  4. MD5
  5. Sha1
  6. Sha256
  7. SipHash
  8. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. IpAddress
  2. Server
  3. ServerBuilder
  4. SocketAddress
  5. TcpListener
  6. TcpStream
  7. UdpSocket

io / net / dns

  1. Dns

io / net / tls

  1. TlsConnection
  2. TlsListener

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. Decompressor
  3. Encoder
  4. Schema
  5. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream

xpu / mesh

  1. MeshSimplifier

Transform

cajeta.math.Transform — a TRS (translate / rotate / scale) rigid+scale transform, the object-placement value type a scene graph and a renderer’s model matrix are built from. A value type over the builtin Vector<float32,3> (translation, scale) and Quaternion<float32> (rotation): stack-allocated, no heap, no drop chain. Applied to a point the order is scale, then rotate, then translate; transformVector drops the translation. Compose and inverse keep the TRS form exactly for uniform scale — a non-uniform scale combined with a rotation is not closed under TRS (a documented limitation).

package snip.transform;

import cajeta.math.Transform;
import cajeta.math.Rotation;

public final class Demo {
    public static void run() {
        Vector<float32,3> tr = stack Vector<float32,3>(0.0f, 0.0f, 5.0f);
        Quaternion<float32> rot = Rotation.identity();
        Vector<float32,3> sc = stack Vector<float32,3>(2.0f, 2.0f, 2.0f);
        Transform t = stack Transform(tr, rot, sc);
        Vector<float32,3> p = stack Vector<float32,3>(1.0f, 0.0f, 0.0f);
        Vector<float32,3> w = t.transformPoint(p);   // (2, 0, 5)
        return;
    }
}

Methods

Signature
Transform(Vector<float32,3> translation, Quaternion<float32> rotation, Vector<float32,3> scale)Build a transform from its translation, rotation, and scale components
static Transform identity()The identity transform: no translation, no rotation, unit scale
Vector<float32,3> translation()The translation component
Quaternion<float32> rotation()The rotation component (a unit quaternion)
Vector<float32,3> scale()The scale component
Vector<float32,3> transformPoint(Vector<float32,3> p)Map a point through the transform: translate(rotate(scale(p)))
Vector<float32,3> transformVector(Vector<float32,3> v)Map a direction: rotate(scale(v)) — no translation
Transform compose(Transform child)The transform that applies child first, then this (exact for uniform scale)
Transform inverse()The inverse transform: inverse().transformPoint(transformPoint(p)) == p (exact for uniform scale)

⚑ = @EntryPoint

See also

Source: docs/stdlib/math/Transform.md · 1 min read · 240 words