Алгоритм создания многоугольника из множества точек VB6 - PullRequest
2 голосов
/ 11 октября 2011

Я пытаюсь создать многоугольник в VB6, используя функцию многоугольника.

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

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

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

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 11 октября 2011

Для простоты и уникальности решения вы должны начать с алгоритма выпуклой оболочки, подобного этому («Упаковка подарков»):

http://en.wikipedia.org/wiki/Gift_wrapping_algorithm

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

4 голосов
/ 14 октября 2011

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

http://en.wikipedia.org/wiki/Graham_scan

Если вы следуете псевдокоду, будьте осторожны.

Линия

while ccw(points[M-1], points[M], points[i]) <= 0:

Должно быть

while ccw(points[M-1], points[M], points[i]) >= 0:
...