Как приблизить 3D-форму к сетке?

Учитывая трехмерный объект, как мне преобразовать его в аппроксимированную форму, в которой все стороны объекта параллельны любой из координатных плоскостей, а все вершины имеют целочисленные координаты? Например, сфера с центром в начале координат и радиусом 1,5 будет аппроксимирована кубом с центром в начале координат и длиной стороны 2. Например, линия, заданная как x = y = 0,5 будет иметь аппроксимированную форму прямоугольного параллелепипеда с бесконечной длиной, шириной и шириной, равными 1, и расположенного таким образом, что один из его ребер проходит вдоль оси z, в то время как все грани вдоль или параллельно любой из xz или yz со- плоскости ординат.

Я работаю только с конечными объектами, приведенный выше пример предназначен только для объяснения моих потребностей. Мне нужен алгоритм, который может сделать это для меня для любой формы.


person alice_v3.0.4    schedule 08.05.2017    source источник


Ответы (1)


В общем случае вам необходимо определить максимальные и минимальные координаты фигуры вдоль каждой оси и определить минимальную целочисленную ограничивающую рамку, выровненную по оси, со значениями округляется в большую сторону (используя Ceil) для максимальных координат и округляется в меньшую сторону (используя Floor) для минимальных координат. Например:

XMin_Box = Floor(XMin_Shape)
XMax_Box = Ceil(XMax_Shape)

Редактировать:

Если вам нужно приблизить форму с большей точностью, подумайте о каком-нибудь вокселизация (3D аналог 2D растеризации)

person MBo    schedule 08.05.2017
comment
Спасибо за помощь. Однако я искал не это. Я думаю, что мне нужно привести лучший пример в моем вопросе. - person alice_v3.0.4; 09.05.2017