Нужен алгоритм перенумеровки вершин замкнутой полилинии

Автор Тема: Нужен алгоритм перенумеровки вершин замкнутой полилинии  (Прочитано 4995 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnatolyАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 62
  • Карма: 3
  • Skype: ant_nkh
Речь не идет о переделке самой полилинии.
Надо переставить индексы вершин в массиве, указав, что индекс Х заменится на индекс У.
Полилиния может быть по часовой стрелке или против.
Пример 1
5 вершин, по часовой стрелке
4-я становится 1-ой, 5-я 2-ой....3-я 5-ой
Пример 2
5 вершин, по часовой стрелке
5-я становится 1-ой, 4-я 2-ой....1-я 5-ой
Пример 3
5 вершин, против часовой стрелки
5-я становится 1-ой, 4-я 2-ой....1-я 5-ой

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
1. Прочитать все координаты полилинии через свойство Polyline.Coordinates
2. Упорядочить их так как тебе нужно
3. Записать все координаты полилинии через свойство Polyline.Coordinates
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн AnatolyАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 62
  • Карма: 3
  • Skype: ant_nkh
Я наверное, не точно объяснил, что надо.
У меня есть массив с координатами вершин.
Мне надо переписать индексы массива.
Например, было
|1|X1|Y1|
.....
|5|X5|Y5|

Стало
|1|X4|Y4|
.....
|3|X5|Y5|
|5|X2|Y2|
т.е. надо, чтобы 4-я стала 1-ой,  тогда 5-я станет2-ой, 3-я 5-ой и т.д.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 624
  • Карма: 158
    • ПГСу Бложик
Сделай двойную коллекцию вершин и начни с нужной по счету.

Оффлайн AnatolyАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 62
  • Карма: 3
  • Skype: ant_nkh
Сделал так.
Дано:
UB - верхняя граница массива (количество вершин)
Vold - прежний индекс вершины
Vnew- новый индекс вершины
delta =Vold-Vnew

Цикл по вершинам
Vnew текущ.=Vold текущ. - delta
Если Vnew текущ. <= 0 то Vnew текущ. = UB - ABS(Vnew текущ.)
« Последнее редактирование: 14-03-2021, 22:27:45 от Anatoly »