Ich möchte eine Methode für meine Quaderklasse schreiben, die den Quader zurückgibt, der durch die Schnittmenge zweier Quader definiert ist.
Ein Quader wird intern durch einen Ursprungspunkt und einen Endpunkt so dargestellt, dass der Vektor vom Ursprung zum Endpunkt notwendigerweise in allen Dimensionen positiv ist.
Als Ausgangspunkt (vielleicht hilfreich, vielleicht nicht) bestimmt die folgende Methode (in Ruby), ob sich die beiden Quader schneiden oder nicht.
def intersects? other_cuboid
return not( self.top < other_cuboid.bottom ||
self.bottom > other_cuboid.top ||
self.left > other_cuboid.right ||
self.right < other_cuboid.left ||
self.front < other_cuboid.back ||
self.back > other_cuboid.front )
end
Intuitiv scheint es, dass es eine ziemlich sparsame Lösung für dieses Problem sein sollte, aber ich kann nicht von ihr denken... irgendwelche Ideen?
Hinweis: Die Quader sind notwendigerweise an den Achsen ausgerichtet.