MCPcopy Create free account
hub / github.com/Bloom-Engine/engine / mat4_from_trs

Function mat4_from_trs

native/shared/src/models.rs:615–629  ·  view source on GitHub ↗
(t: &[f32; 3], r: &[f32; 4], s: &[f32; 3])

Source from the content-addressed store, hash-verified

613}
614
615fn mat4_from_trs(t: &[f32; 3], r: &[f32; 4], s: &[f32; 3]) -> [[f32; 4]; 4] {
616 let (x, y, z, w) = (r[0], r[1], r[2], r[3]);
617 let x2 = x + x; let y2 = y + y; let z2 = z + z;
618 let xx = x * x2; let xy = x * y2; let xz = x * z2;
619 let yy = y * y2; let yz = y * z2; let zz = z * z2;
620 let wx = w * x2; let wy = w * y2; let wz = w * z2;
621
622 // Column-major: m[col][row]
623 [
624 [(1.0 - (yy + zz)) * s[0], (xy + wz) * s[0], (xz - wy) * s[0], 0.0], // column 0
625 [(xy - wz) * s[1], (1.0 - (xx + zz)) * s[1], (yz + wx) * s[1], 0.0], // column 1
626 [(xz + wy) * s[2], (yz - wx) * s[2], (1.0 - (xx + yy)) * s[2], 0.0], // column 2
627 [t[0], t[1], t[2], 1.0], // column 3 (translation)
628 ]
629}
630
631fn quat_slerp(a: &[f32; 4], b: &[f32; 4], t: f32) -> [f32; 4] {
632 let mut dot = a[0]*b[0] + a[1]*b[1] + a[2]*b[2] + a[3]*b[3];

Callers 1

compute_joint_transformsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected