summaryrefslogtreecommitdiff
path: root/src/main/kotlin/io/dico/parcels2/util/math/Vec3d.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/util/math/Vec3d.kt')
-rw-r--r--src/main/kotlin/io/dico/parcels2/util/math/Vec3d.kt112
1 files changed, 60 insertions, 52 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/util/math/Vec3d.kt b/src/main/kotlin/io/dico/parcels2/util/math/Vec3d.kt
index 72b6dcd..2c3512f 100644
--- a/src/main/kotlin/io/dico/parcels2/util/math/Vec3d.kt
+++ b/src/main/kotlin/io/dico/parcels2/util/math/Vec3d.kt
@@ -1,53 +1,61 @@
-package io.dico.parcels2.util.math
-
-import org.bukkit.Location
-import kotlin.math.sqrt
-
-data class Vec3d(
- val x: Double,
- val y: Double,
- val z: Double
-) {
- constructor(loc: Location) : this(loc.x, loc.y, loc.z)
-
- operator fun plus(o: Vec3d) = Vec3d(x + o.x, y + o.y, z + o.z)
- operator fun minus(o: Vec3i) = Vec3d(x - o.x, y - o.y, z - o.z)
- infix fun addX(o: Double) = Vec3d(x + o, y, z)
- infix fun addY(o: Double) = Vec3d(x, y + o, z)
- infix fun addZ(o: Double) = Vec3d(x, y, z + o)
- infix fun withX(o: Double) = Vec3d(o, y, z)
- infix fun withY(o: Double) = Vec3d(x, o, z)
- infix fun withZ(o: Double) = Vec3d(x, y, o)
- fun add(ox: Double, oy: Double, oz: Double) = Vec3d(x + ox, y + oy, z + oz)
- fun toVec3i() = Vec3i(x.floor(), y.floor(), z.floor())
-
- fun distanceSquared(o: Vec3d): Double {
- val dx = o.x - x
- val dy = o.y - y
- val dz = o.z - z
- return dx * dx + dy * dy + dz * dz
- }
-
- fun distance(o: Vec3d) = sqrt(distanceSquared(o))
-
- operator fun get(dimension: Dimension) =
- when (dimension) {
- Dimension.X -> x
- Dimension.Y -> y
- Dimension.Z -> z
- }
-
- fun with(dimension: Dimension, value: Double) =
- when (dimension) {
- Dimension.X -> withX(value)
- Dimension.Y -> withY(value)
- Dimension.Z -> withZ(value)
- }
-
- fun add(dimension: Dimension, value: Double) =
- when (dimension) {
- Dimension.X -> addX(value)
- Dimension.Y -> addY(value)
- Dimension.Z -> addZ(value)
- }
+package io.dico.parcels2.util.math
+
+import org.bukkit.Location
+import kotlin.math.sqrt
+
+data class Vec3d(
+ val x: Double,
+ val y: Double,
+ val z: Double
+) {
+ constructor(loc: Location) : this(loc.x, loc.y, loc.z)
+
+ operator fun plus(o: Vec3d) = Vec3d(x + o.x, y + o.y, z + o.z)
+ operator fun plus(o: Vec3i) = Vec3d(x + o.x, y + o.y, z + o.z)
+ operator fun minus(o: Vec3d) = Vec3d(x - o.x, y - o.y, z - o.z)
+ operator fun minus(o: Vec3i) = Vec3d(x - o.x, y - o.y, z - o.z)
+ infix fun addX(o: Double) = Vec3d(x + o, y, z)
+ infix fun addY(o: Double) = Vec3d(x, y + o, z)
+ infix fun addZ(o: Double) = Vec3d(x, y, z + o)
+ infix fun withX(o: Double) = Vec3d(o, y, z)
+ infix fun withY(o: Double) = Vec3d(x, o, z)
+ infix fun withZ(o: Double) = Vec3d(x, y, o)
+ fun add(ox: Double, oy: Double, oz: Double) = Vec3d(x + ox, y + oy, z + oz)
+ fun toVec3i() = Vec3i(x.floor(), y.floor(), z.floor())
+
+ fun distanceSquared(o: Vec3d): Double {
+ val dx = o.x - x
+ val dy = o.y - y
+ val dz = o.z - z
+ return dx * dx + dy * dy + dz * dz
+ }
+
+ fun distance(o: Vec3d) = sqrt(distanceSquared(o))
+
+ operator fun get(dimension: Dimension) =
+ when (dimension) {
+ Dimension.X -> x
+ Dimension.Y -> y
+ Dimension.Z -> z
+ }
+
+ fun with(dimension: Dimension, value: Double) =
+ when (dimension) {
+ Dimension.X -> withX(value)
+ Dimension.Y -> withY(value)
+ Dimension.Z -> withZ(value)
+ }
+
+ fun add(dimension: Dimension, value: Double) =
+ when (dimension) {
+ Dimension.X -> addX(value)
+ Dimension.Y -> addY(value)
+ Dimension.Z -> addZ(value)
+ }
+
+ fun copyInto(loc: Location) {
+ loc.x = x
+ loc.y = y
+ loc.z = z
+ }
} \ No newline at end of file