Подскажите алгоритм перпендикулярной линии к полилинии с дугами

Автор Тема: Подскажите алгоритм перпендикулярной линии к полилинии с дугами  (Прочитано 8316 раз)

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

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

  • ADN OPEN
  • Сообщений: 18
  • Карма: 1
Коллеги, подскажите алгоритм действий
Есть полилиния составленная из прямых линий и дуг, необходимо построить перпендикулярные линии с равными промежутками расстояния между ними.
(Т.е. есть жд линия с радиусами и нужно показать пикеты через каждый 1 км)

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

буду рад любым предложениям и мыслям

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

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

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

  • ADN OPEN
  • Сообщений: 18
  • Карма: 1
пишу на IronPython (аля С#, а следовательно и .Net)
пока пошел по пути предварительного преобразования сплайна в полилинию в Автокаде с помощью команды _pedit с требуемой детализацией (например, 70)
получаю много тысяч прямых отрезков, нахожу сумму отрезков кратных ~ 1 км, строю новую линию по координатам последнего в каждом цикле, поворачиваю на 90 градусов и масштабирую до приемлемых значений (заданной длины)

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Legantmar,
Curve.GetFirstDerivative даёт вектор касательной к кривой в точке на кривой. Соответственно добавив PI/2 получишь нормаль к кривой.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 18
  • Карма: 1