package com.suno.android.common_ui.graphics import Vector3 class Matrix4x4( private val matrix: FloatArray = FloatArray(16), ) { companion object { fun identity(): Matrix4x4 { val identityMatrix = FloatArray(16) android.opengl.Matrix.setIdentityM(identityMatrix, 0) return Matrix4x4(identityMatrix) } fun translation( translation: Vector3, ): Matrix4x4 { val matrix = identity() android.opengl.Matrix.translateM(matrix.matrix, 0, translation.x, translation.y, translation.z) return matrix } fun rotation( angleInDegrees: Float, axis: Vector3, ): Matrix4x4 { val matrix = identity() android.opengl.Matrix.rotateM(matrix.matrix, 0, angleInDegrees, axis.x, axis.y, axis.z) return matrix } fun scaling( scale: Vector3, ): Matrix4x4 { val matrix = identity() android.opengl.Matrix.scaleM(matrix.matrix, 0, scale.x, scale.y, scale.z) return matrix } } fun toFloatArray() = matrix }