Как рассчитать площадь, в которой соприкасаются две грани кубоидов? - PullRequest
0 голосов
/ 12 апреля 2019

Я разрабатываю алгоритм трехмерной упаковки для элементов кубоидов, и для его корректной настройки мне нужно иметь возможность рассчитать площадь, созданную в месте соприкосновения двух кубидов.Под этим я подразумеваю, что я хочу иметь возможность рассчитать «площадь соединения», в которой эти два кубических ребра соприкасаются, или, другими словами, область, где эти два кубоида касаются друг друга.

Элемент cubid определяется следующим образом:

  • размеры: int ширина, int высота, int глубина

  • начальная позиция: int x, int y,int z

Можно предположить, что в этой системе не происходит никакого вращения и что все переменные являются целыми числами.

Любая помощь в вычислении этой области будетвысоко ценится.

1 Ответ

0 голосов
/ 12 апреля 2019

Это будет зависеть от языка, и то, что вы используете его, также зависит от происхождения на кубоиде. Предполагая, что он находится в углу, допустим, что нижний левый задний угол является источником, это позволит нам добавить вдоль оси.

Позволяет поместить cube1s x, y, z в cube1_pos и cube1_pos2 для противоположного угла, это также устанавливает размер. То же самое можно сказать и о кубе2

cube1_pos = [x,y,z];
cube1_pos2 = [x_s,y_s,z_s];
cube2_pos = [x2,y2,z2];
cube2_pos2 = [x2_s,y2_s,z2_s];

Затем мы можем рассмотреть случаи, когда все точки между cube1_pos и cube1_pos2, и посмотреть, находится ли cube2 в какой-либо из этих точек. Это можно использовать для объема, но, поскольку объекты не могут переходить друг в друга, они найдут область.

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

...