/
Box3.kt
68 lines (57 loc) · 1.33 KB
/
Box3.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package org.openrndr.kartifex
class Box3 internal constructor(ax: Double, ay: Double, az: Double, bx: Double, by: Double, bz: Double) :
Box<Vec3, Box3>() {
var lx = 0.0
var ly = 0.0
var lz = 0.0
var ux = 0.0
var uy = 0.0
var uz = 0.0
constructor(a: Vec3, b: Vec3) : this(a.x, a.y, a.z, b.x, b.y, b.z) {}
fun box2(): Box2 {
return Box2(lx, ly, ux, uz)
}
protected override fun construct(a: Vec3, b: Vec3): Box3 {
return Box3(a, b)
}
protected override fun empty(): Box3 {
return EMPTY
}
override fun lower(): Vec3 {
return Vec3(lx, ly, lz)
}
override fun upper(): Vec3 {
return Vec3(ux, uy, uz)
}
override val isEmpty: Boolean
get() = this === EMPTY
companion object {
val EMPTY = Box3(
Vec3(Double.NaN, Double.NaN, Double.NaN),
Vec3(Double.NaN, Double.NaN, Double.NaN)
)
}
init {
if (ax < bx) {
lx = ax
ux = bx
} else {
ux = ax
lx = bx
}
if (ay < by) {
ly = ay
uy = by
} else {
uy = ay
ly = by
}
if (az < bz) {
lz = az
uz = bz
} else {
uz = az
lz = bz
}
}
}