data class Vector2( val x: Float, val y: Float, ) { companion object { val zero = Vector2(0f, 0f) val ones = Vector2(1f, 1f) val xAxis = Vector2(1f, 0f) val yAxis = Vector2(0f, 1f) } } data class Vector3( val x: Float, val y: Float, val z: Float, ) { companion object { val zero = Vector3(0f, 0f, 0f) val ones = Vector3(1f, 1f, 1f) val white = Vector3(1f, 1f, 1f) val black = Vector3(0f, 0f, 0f) val red = Vector3(1f, 0f, 0f) val green = Vector3(0f, 1f, 0f) val blue = Vector3(0f, 0f, 1f) } operator fun plus( other: Vector3, ) = Vector3(x + other.x, y + other.y, z + other.z) operator fun times( scalar: Float, ) = Vector3(x * scalar, y * scalar, z * scalar) }