Создание кривой по координатам из текстового файла

Автор Тема: Создание кривой по координатам из текстового файла  (Прочитано 31719 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Только в случае "островов" этот алгоритм работать не будет. В этой задаче самое главное определится с алгоритмом.
А иначе будешь гадать какая из кривых (красная или зелёная) больше подходит:

P.S.: Я никогда не сталкивался с такими алгоритмами, так что врядли подскажу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
Александр Ривилис, интересно, а с какого алгоритма эта картинка?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Александр Ривилис, интересно, а с какого алгоритма эта картинка?
Ни с какого. Вручную нарисовал в AutoCAD. И на глазок провёл два сплайна между "островами".
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
Александр Ривилис, но если без островков, алгоритм надеюсь будет работать. просто в тот алгоритм нужно добавить какие-либо дополнительные модули, но какие?

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
Александр Ривилис, но для моей задачи правильной была бы красная линия

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
но если без островков, алгоритм надеюсь будет работать
Работать то он будет, но удовлетворят ли его результаты...

просто в тот алгоритм нужно добавить какие-либо дополнительные модули, но какие?
Какие модули? Тут алгоритм скорее всего должен быть совершенно иным.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
Александр Ривилис, вот и проблема что я не знаю как создать нужный алгоритм, из-за этого ищу что-то похожее.

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
aleksandr73, я создавал алгоритм в Matlab
Код - C++ [Выбрать]
  1. for i=1:length(x1)
  2. mind(i)=1000000;
  3. k(i)=0;
  4.    for j=1:length(x3)
  5.      
  6.    d=sqrt((x1(i)-x3(j))^2+(y1(i)-y3(j))^2);
  7.    if d<mind(i)
  8.        mind(i)=d;
  9.        k=j;
  10.        l=i;
  11.        
  12.        x0(i)=(x1(i)+x3(j))/2;
  13.        y0(i)=(y1(i)+y3(j))/2;
  14.      
  15.      
  16.        end;
  17.     end;
  18. end;
  19. hold on;
  20. plot(x1,y1,'Marker','.','MarkerEdgeColor','g','MarkerSize',30, 'LineStyle', 'none')
  21. plot(x3,y3,'Marker','.','MarkerEdgeColor','r','MarkerSize',30, 'LineStyle', 'none')
  22.  
  23. plot(x0,y0,'*');
  24. %plot(y1(k),x1(k),'*')
  25. %plot(y3(l),x3(l),'*')

« Последнее редактирование: 14-04-2015, 21:39:11 от Виктор Чекалин »

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
aleksandr73, я создавал алгоритм в Matlab
И?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
Александр Ривилис,  но по картинке видно что он не очень правильно рабртает

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Я бы сказал точнее, что совсем неправильно работает.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
Александр Ривилис, я пытался находить расстояние от одной точки на одной кривой до каждой точки на другой кривой, и выбирать минимальное, далее находить середину минимального и так по циклу.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
ИМХО, задача заключается именно в построении траектории движения. А посмотрение траектории движения - это нечто больше, чем посмтроение кривой между двумя кривыми. Это уже из разряда того, как навигатор прокладывает маршруты между точкой А и точкой Б. А это уже требует совершенно других знаний, чем у специалистов на этом форуме.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
В случае замкнутого контура (или просто хитрого контура) алгоритм даёт бред. Нужно рассматривать только те точки, линия между которыми не пересекает контур. Только тогда есть шансы получить приемлимый результат.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
пытался находить расстояние от одной точки на одной кривой до каждой точки на другой кривой, и выбирать минимальное, далее находить середину минимального и так по циклу
В статье был алгоритм таков:
1) две кривые разбиваются на одинаковое количество отрезков
2) берем начальные координаты первого отрезка у обоих линий
3) вычислияем координаты середины между полученными на шаге 2 координатами
4) Повторяем шаги 2-3 для каждоого отрезка, на который мы разбили обе кривые
5) строим линию по координатам, полученным на шаге 3

Основная сложность - как разбить кривую на равные отрезки и получить координаты начала и конца каждого отрезка. в Revit API были для этого методы. Как обстоят с этим дела в Mathalb или AutoCAD я не могу сказать.