Does self intersect with other?

var a = new Box[Int].lbwh(0, 0, 2, 2)
var b = new Box[Int].lbwh(1, 1, 8, 2)
var c = new Box[Int].lbwh(3, 0, 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)

Property definitions

geometry $ Boxed :: intersects
	# Does `self` intersect with `other`?
	#
	#     var a = new Box[Int].lbwh(0, 0, 2, 2)
	#     var b = new Box[Int].lbwh(1, 1, 8, 2)
	#     var c = new Box[Int].lbwh(3, 0, 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)
	fun intersects(other: Boxed[N]): Bool
	do
		return self.left <= other.right and other.left <= self.right and
			self.top >= other.bottom and other.top >= self.bottom
	end
lib/geometry/boxes.nit:61,2--76,4

geometry $ Boxed3d :: intersects
	#     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
lib/geometry/boxes.nit:182,2--195,4