3D полигоны в Python - PullRequest
       12

3D полигоны в Python

1 голос
/ 11 января 2009

Насколько мне известно, в Python нет встроенной функции многоугольника. Я хочу создать 3D-карту и решил, что полигоны - лучший способ сделать это.

Не желая изобретать велосипед, я немного погуглил и обнаружил, что там много вещей с Python, но я не смог найти то, что хотел. Таким образом, прежде чем я изобрел колесо (или изобрел его целиком), кто-нибудь знает о системе Polygon для Python?

Обратите внимание, что это должно быть 3D (я нашел довольно много 2D). Также обратите внимание, что меня интересует не их отображение, а их хранение и структура данных в Python.

Спасибо

Ответы [ 3 ]

4 голосов
/ 11 января 2009

Одна из наиболее полных систем географии / картографии, доступных для Python, о которой я знаю, это GeoDjango . Это работает поверх Django , инфраструктуры MVC. С ним поставляется большой набор инструментов для расчета полигонов, линий и расстояний, которые могут даже учитывать кривизну земной поверхности, если это необходимо.

С учетом вышесказанного, самый быстрый способ, которым я могу придумать для создания 3D-карты, - это использовать карту высот. Создайте двумерный список кортежей, содержащих координаты (x, y, z). Каждый кортеж представляет собой равномерно расположенную точку на сетке, отображаемую размерами массива. Это создает простую плоскость вдоль осей X и Z; наземная плоскость. Многоугольники, составляющие плоскость, - это четырехугольники, многоугольники с четырьмя сторонами.

Далее, чтобы получить трехмерную высоту, просто присвойте каждой точке значение Y. Это создаст пики и впадины на вашей наземной плоскости.

Как вы отрендерите это, зависит от вас, и преобразование вашей сетки точек в формат многоугольника, который может понять что-то вроде OpenGL, может потребовать некоторой работы, но взгляните на Visual Python , это Простейшая 3D библиотека, которую я видел для Python.

2 голосов
/ 11 января 2009

Я думаю, что вы имеете в виду многогранник, а не многоугольник ... и вы можете посмотреть на vpython

0 голосов
/ 08 февраля 2011

CGAL - это геометрическая библиотека C ++, которая, помимо прочего, моделирует многогранники (трехмерные формы с плоской поверхностью)

Имеются привязки Python. Документация для класса Polygon3 находится здесь: http://cgal -python.gforge.inria.fr / Руководство / CGAL.Polyhedron.html # Polyhedron_3

...