Я хочу написать метод для моего класса Cuboid, который возвращает кубоид, определенный пересечением двух кубоидов.
Кубоид внутренне представлен точкой начала и точкой конца, такой, что вектор изначало конечной точки обязательно положительно во всех измерениях.
В качестве отправной точки (может быть полезной, может быть, нет) следующий метод (в рубине) определяет, пересекаются ли два кубоида.
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
Интуитивно кажется, что должно быть довольно экономное решение этой проблемы, но я не могу думать об этом ... какие-либо идеи?
Примечание: кубоиды обязательно выровнены по осям