@@ -31,10 +31,10 @@ export class Mat4x4 {
3131
3232 // biome-ignore format: matrix layout
3333 m . mat = [
34- f / aspect , 0 , 0 , 0 ,
35- 0 , f , 0 , 0 ,
36- 0 , 0 , far * nf , - near * far * nf ,
37- 0 , 0 , 1 , 0 ,
34+ f / aspect , 0 , 0 , 0 ,
35+ 0 , f , 0 , 0 ,
36+ 0 , 0 , far * nf , - near * far * nf ,
37+ 0 , 0 , 1 , 0 ,
3838 ] ;
3939 return m ;
4040 }
@@ -77,6 +77,18 @@ export class Mat4x4 {
7777 return m ;
7878 }
7979
80+ static scale ( s : number ) : Mat4x4 {
81+ const m = new Mat4x4 ( ) ;
82+ // biome-ignore format: matrix layout
83+ m . mat = [
84+ s , 0 , 0 , 0 ,
85+ 0 , s , 0 , 0 ,
86+ 0 , 0 , s , 0 ,
87+ 0 , 0 , 0 , 1 ,
88+ ] ;
89+ return m ;
90+ }
91+
8092 static fromTransform (
8193 { dx, dy, dz } : Translation ,
8294 { axis, angle } : { axis : Point3D ; angle : number } ,
@@ -107,9 +119,9 @@ export class Mat4x4 {
107119
108120 // row-major access: m[row * 4 + col]
109121 return {
110- x : m [ 0 ] ! * x + m [ 1 ] ! * y + m [ 2 ] ! * z + m [ 3 ] ! ,
111- y : m [ 4 ] ! * x + m [ 5 ] ! * y + m [ 6 ] ! * z + m [ 7 ] ! ,
112- z : m [ 8 ] ! * x + m [ 9 ] ! * y + m [ 10 ] ! * z + m [ 11 ] ! ,
122+ x : m [ 0 ] * x + m [ 1 ] * y + m [ 2 ] * z + m [ 3 ] ,
123+ y : m [ 4 ] * x + m [ 5 ] * y + m [ 6 ] * z + m [ 7 ] ,
124+ z : m [ 8 ] * x + m [ 9 ] * y + m [ 10 ] * z + m [ 11 ] ,
113125 } ;
114126 }
115127
@@ -125,10 +137,10 @@ export class Mat4x4 {
125137 for ( let row = 0 ; row < 4 ; row ++ ) {
126138 for ( let col = 0 ; col < 4 ; col ++ ) {
127139 result . mat [ row * 4 + col ] =
128- a [ row * 4 + 0 ] ! * b [ 0 * 4 + col ] ! +
129- a [ row * 4 + 1 ] ! * b [ 1 * 4 + col ] ! +
130- a [ row * 4 + 2 ] ! * b [ 2 * 4 + col ] ! +
131- a [ row * 4 + 3 ] ! * b [ 3 * 4 + col ] ! ;
140+ a [ row * 4 + 0 ] * b [ 0 * 4 + col ] +
141+ a [ row * 4 + 1 ] * b [ 1 * 4 + col ] +
142+ a [ row * 4 + 2 ] * b [ 2 * 4 + col ] +
143+ a [ row * 4 + 3 ] * b [ 3 * 4 + col ] ;
132144 }
133145 }
134146
@@ -142,10 +154,10 @@ export class Mat4x4 {
142154 const m = this . mat ;
143155 // biome-ignore format: matrix layout
144156 return Float32Array . from ( [
145- m [ 0 ] ! , m [ 4 ] ! , m [ 8 ] ! , m [ 12 ] ! ,
146- m [ 1 ] ! , m [ 5 ] ! , m [ 9 ] ! , m [ 13 ] ! ,
147- m [ 2 ] ! , m [ 6 ] ! , m [ 10 ] ! , m [ 14 ] ! ,
148- m [ 3 ] ! , m [ 7 ] ! , m [ 11 ] ! , m [ 15 ] ! ,
157+ m [ 0 ] , m [ 4 ] , m [ 8 ] , m [ 12 ] ,
158+ m [ 1 ] , m [ 5 ] , m [ 9 ] , m [ 13 ] ,
159+ m [ 2 ] , m [ 6 ] , m [ 10 ] , m [ 14 ] ,
160+ m [ 3 ] , m [ 7 ] , m [ 11 ] , m [ 15 ] ,
149161 ] ) ;
150162 }
151163}
0 commit comments