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

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

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

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
Виктор Чекалин,  да это создание траектории, но простой алгоритм это создание кривой между двумя другими

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
пытался находить расстояние от одной точки на одной кривой до каждой точки на другой кривой, и выбирать минимальное, далее находить середину минимального и так по циклу
В статье был алгоритм таков:
1) две кривые разбиваются на одинаковое количество отрезков
2) берем начальные координаты первого отрезка у обоих линий
3) вычислияем координаты середины между полученными на шаге 2 координатами
4) Повторяем шаги 2-3 для каждоого отрезка, на который мы разбили обе кривые
5) строим линию по координатам, полученным на шаге 3

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

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

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
aleksandr73, как правильно заметил Александр, то в случае замкнутого конутра алгоритм работать не будет. Исходные кривые у вас что из себя представляют?

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

  • ADN OPEN
  • Сообщений: 30
  • Карма: 0
Виктор Чекалин,  да в случае замкнутого контура он не работает, возможно нужно сделать так чтобы он считал расстояния только для "видимых" частей контура

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

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Основная сложность - как разбить кривую на равные отрезки и получить координаты начала и конца каждого отрезка. в Revit API были для этого методы. Как обстоят с этим дела в Mathalb или AutoCAD я не могу сказать.
Редактировать сообщение
В AutoCAD это просто. Но сам алгоритм в данном случае не годится. Мне кажется, что алгоритм должен быть такой:
1) Находим минимальные и максимальные X и Y у всех переданных кривых, между которыми строим путь.
2) С заданным очень небольшим шагом строим вертикальные (или горизонтальные, или наклонные) прямые и находим пересечения между этими прямыми и переданными кривыми.
3) Находим крайние точки внешних по отношению к кривым областей, соединяем их между собой отрезком и находим середину отрезка.
4) Соединяем между собой последовательные середины отрезков.
Вполне возможно, что я не всё учел.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

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


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

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


[/quote]
 точки выбирались последовательно по циклу, сначала расстояние от первой до каждой точки из друг. массива, далее находим минимальное

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

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

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

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

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

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

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

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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Значит потребуется:
1) Определится со средой (AutoCAD, Revit)
2) Сделать нормальную постановку задачи (то что я вижу на данный момент - это лишь огрызки)
3) Разбить задачу на отдельные простейшие элементы (этапы).
4) Задать вопросы по этим простейшим элементам.
При этом сам алгоритм получения "трассы" на основе кучи кривых мы здесь не обсуждаем.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение