geometry :: Boxed3d :: defaultinit
# An 3d abstract bounded object
interface Boxed3d[N: Numeric]
super Boxed[N]
# Front bound
#
# require: front >= back
fun front: N is abstract
# Back bound
#
# require: back <= bottom
fun back: N is abstract
# var a = new Box3d[Int].lbfwhd(1, 1, -1, 4, 4, 4)
# var b = new Box3d[Int].lbfwhd(2, 2, -2, 2, 2, 2)
# var c = new Box3d[Int].lbfwhd(2, 2, 0, 2, 2, 8)
# assert a.contains(b)
# assert not b.contains(a)
# assert c.contains(b)
# assert not b.contains(c)
# assert not a.contains(c)
# assert not c.contains(a)
redef fun contains(other)
do
return super and (not other isa Boxed3d[N] or
(self.front >= other.front and self.back <= other.back))
end
# var a = new Box3d[Int].lbfwhd(0, 0, 0, 2, 2, 2)
# var b = new Box3d[Int].lbfwhd(1, 1, 1, 8, 2, 2)
# var c = new Box3d[Int].lbfwhd(3, 0, 0, 2, 2, 8)
# assert a.intersects(b)
# assert b.intersects(a)
# assert b.intersects(c)
# assert c.intersects(b)
# assert not c.intersects(a)
# assert not a.intersects(c)
redef fun intersects(other)
do
return super and (not other isa Boxed3d[N] or
(self.back <= other.front and other.back <= self.front))
end
redef fun padded(dist): Box3d[N] do return new Box3d[N].lrtbfb(left - dist, right + dist, top + dist, bottom - dist, front + dist, back - dist)
redef fun to_s do return "<{class_name} left: {left}, right: {right}, top: {top}, bottom: {bottom}, front: {front}, back: {back}>"
end
lib/geometry/boxes.nit:153,1--200,3