Путь к списку треугольников (.NET / C #) - PullRequest
3 голосов
/ 12 марта 2009

Учитывая путь, выраженный в виде массива 2d точек:

Point[] path = new Point[4]
{
    new Point(0,0),
    new Point(10,0),
    new Point(10,10),
    new Point(0,10),
};

... Вот коробка.

Как лучше всего преобразовать это в список треугольников (которые заполняют путь) для использования в 3D-приложении? Учитывая, что это всего лишь простой пример и путь может быть довольно сложным в реальности. Есть ли уже что-то в фреймворке, может быть System.Drawing или в WPF, который поможет с этим?

Редактировать: (После комментария Самуила) В идеале я хотел бы иметь возможность иметь дело как с выпуклыми, так и с вогнутыми многоугольниками, иначе рисунок должен быть составлен из множества выпуклых многоугольников вручную.

1 Ответ

5 голосов
/ 12 марта 2009

Зависит от того, из чего состоит путь и как он создан.

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

Если это не выпуклый многоугольник, вам, скорее всего, потребуется использовать некоторую форму триангуляции для заполнения пути. Есть довольно много вариантов там. Большая часть примера кода написана на C или C ++, а не на C #, но это может помочь:

http://local.wasp.uwa.edu.au/~pbourke/papers/triangulate/morten.html

Основная идея состоит в том, чтобы заполнить внешние границы, и процедура триангуляции передаст обратно правильные индексы треугольника, требуемые для вашего 3D-приложения.

В рамках нет ничего, что сделало бы это для вас.

...