1
1
package glm_.mat4x4
2
2
3
3
import glm_.*
4
- import glm_.glm.determinant
5
4
import glm_.glm.inverse
6
5
import glm_.glm.transpose
7
6
import glm_.mat2x2.Mat2x2t
@@ -79,6 +78,24 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
79
78
list.elementAt(index + 11 )!! .toFloat, list.elementAt(index + 12 )!! .toFloat, list.elementAt(index + 13 )!! .toFloat,
80
79
list.elementAt(index + 14 )!! .toFloat, list.elementAt(index + 15 )!! .toFloat)
81
80
81
+ constructor (buffer: ByteBuffer , offset: Int ) : this (
82
+ buffer.getFloat(offset),
83
+ buffer.getFloat(offset + Float .BYTES ),
84
+ buffer.getFloat(offset + Float .BYTES * 2 ),
85
+ buffer.getFloat(offset + Float .BYTES * 3 ),
86
+ buffer.getFloat(offset + Float .BYTES * 4 ),
87
+ buffer.getFloat(offset + Float .BYTES * 5 ),
88
+ buffer.getFloat(offset + Float .BYTES * 6 ),
89
+ buffer.getFloat(offset + Float .BYTES * 7 ),
90
+ buffer.getFloat(offset + Float .BYTES * 8 ),
91
+ buffer.getFloat(offset + Float .BYTES * 9 ),
92
+ buffer.getFloat(offset + Float .BYTES * 10 ),
93
+ buffer.getFloat(offset + Float .BYTES * 11 ),
94
+ buffer.getFloat(offset + Float .BYTES * 12 ),
95
+ buffer.getFloat(offset + Float .BYTES * 13 ),
96
+ buffer.getFloat(offset + Float .BYTES * 14 ),
97
+ buffer.getFloat(offset + Float .BYTES * 15 ))
98
+
82
99
// -- Matrix conversions --
83
100
84
101
constructor (mat2x2: Mat2x2t <* >) : this (mutableListOf (
@@ -355,6 +372,7 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
355
372
infix operator fun plusAssign (b : Float ) {
356
373
plus(this , this , b)
357
374
}
375
+
358
376
infix operator fun plusAssign (b : Mat4 ) {
359
377
plus(this , this , b)
360
378
}
@@ -369,6 +387,7 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
369
387
infix operator fun minusAssign (b : Float ) {
370
388
minus(this , this , b)
371
389
}
390
+
372
391
infix operator fun minusAssign (b : Mat4 ) {
373
392
minus(this , this , b)
374
393
}
@@ -393,9 +412,11 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
393
412
infix operator fun timesAssign (b : Float ) {
394
413
times(this , this , b)
395
414
}
415
+
396
416
infix operator fun timesAssign (b : Vec4 ) {
397
417
times(b, this , b)
398
418
}
419
+
399
420
infix operator fun timesAssign (b : Mat4 ) {
400
421
times(this , this , b)
401
422
}
@@ -410,6 +431,7 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
410
431
infix operator fun divAssign (b : Float ) {
411
432
div(this , this , b)
412
433
}
434
+
413
435
infix operator fun divAssign (b : Mat4 ) {
414
436
div(this , this , b)
415
437
}
@@ -432,6 +454,7 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
432
454
433
455
// TODO others
434
456
infix fun scale (scale : Vec3 ) = scale(scale.x, scale.y, scale.z, Mat4 ())
457
+
435
458
fun scale (scale : Vec3 , res : Mat4 ) = scale(scale.x, scale.y, scale.z, res)
436
459
437
460
infix fun scale (scale : Float ) = scale(scale, scale, scale, Mat4 ())
@@ -558,10 +581,11 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
558
581
}
559
582
560
583
561
- val isIdentity get() = this [0 ][0 ] == 1f && this [1 ][0 ] == 0f && this [2 ][0 ] == 0f && this [3 ][0 ] == 0f &&
562
- this [0 ][1 ] == 0f && this [1 ][1 ] == 1f && this [2 ][1 ] == 0f && this [3 ][1 ] == 0f &&
563
- this [0 ][2 ] == 0f && this [1 ][2 ] == 0f && this [2 ][2 ] == 1f && this [3 ][2 ] == 0f &&
564
- this [0 ][3 ] == 0f && this [1 ][3 ] == 0f && this [2 ][3 ] == 0f && this [3 ][3 ] == 1f
584
+ val isIdentity
585
+ get() = this [0 ][0 ] == 1f && this [1 ][0 ] == 0f && this [2 ][0 ] == 0f && this [3 ][0 ] == 0f &&
586
+ this [0 ][1 ] == 0f && this [1 ][1 ] == 1f && this [2 ][1 ] == 0f && this [3 ][1 ] == 0f &&
587
+ this [0 ][2 ] == 0f && this [1 ][2 ] == 0f && this [2 ][2 ] == 1f && this [3 ][2 ] == 0f &&
588
+ this [0 ][3 ] == 0f && this [1 ][3 ] == 0f && this [2 ][3 ] == 0f && this [3 ][3 ] == 1f
565
589
566
590
567
591
override fun toString () = super .toString()
0 commit comments