forked from nova/jmonkey-test
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
814 B
29 lines
814 B
package wow.doge.mygame.math;
|
|
|
|
import cats.Show
|
|
|
|
import math.{abs, pow, sqrt}
|
|
|
|
case class ImVector3f(x: Float, y: Float, z: Float)
|
|
object ImVector3f {
|
|
val ZERO = ImVector3f(0, 0, 0)
|
|
val UNIT_X = ImVector3f(1, 0, 0)
|
|
val UNIT_Y = ImVector3f(0, 1, 0)
|
|
val UNIT_Z = ImVector3f(0, 0, 1)
|
|
|
|
def dst(v1: ImVector3f, v2: ImVector3f) =
|
|
sqrt(
|
|
pow((v1.x - v2.x).toDouble, 2) + pow((v1.y - v2.y).toDouble, 2) + pow(
|
|
(v1.z - v2.z).toDouble,
|
|
2
|
|
)
|
|
)
|
|
def manhattanDst(v1: ImVector3f, v2: ImVector3f) =
|
|
abs(v1.x - v2.x) + abs(v1.y - v2.y) + abs(v1.z - v2.z)
|
|
|
|
implicit val showForImVector3f = new Show[ImVector3f] {
|
|
def format(f: Float) = f.formatted("%.2f")
|
|
override def show(t: ImVector3f): String =
|
|
s"ImVector3f(${format(t.x)},${format(t.y)},${format(t.z)})"
|
|
}
|
|
}
|