ADN Club > VBA
Подскажите алгоритм перпендикулярной линии к полилинии с дугами
(1/1)
Legantmar:
Коллеги, подскажите алгоритм действий
Есть полилиния составленная из прямых линий и дуг, необходимо построить перпендикулярные линии с равными промежутками расстояния между ними.
(Т.е. есть жд линия с радиусами и нужно показать пикеты через каждый 1 км)
если бы полилиния состояла бы только из прямых отрезков, то можно было бы вычислить точку на отрезке по расстоянию от начальной точки и построить линию повернутую на 90 градусов относительно нее, но как быть с дугами ?
буду рад любым предложениям и мыслям
Владимир Шу:
нда... если бы вы писали на .нет, все было бы намного проще, а так, Вам придется рассчитывать все руками, получая кривизну дуги, ее длину и самому рассчитывать координаты точки, а дальше все проще, у дуги есть центр, соответственно вы должны стоить отрезки по вектору от центра к точке на дуге.
Legantmar:
пишу на IronPython (аля С#, а следовательно и .Net)
пока пошел по пути предварительного преобразования сплайна в полилинию в Автокаде с помощью команды _pedit с требуемой детализацией (например, 70)
получаю много тысяч прямых отрезков, нахожу сумму отрезков кратных ~ 1 км, строю новую линию по координатам последнего в каждом цикле, поворачиваю на 90 градусов и масштабирую до приемлемых значений (заданной длины)
Александр Ривилис:
Legantmar,
Curve.GetFirstDerivative даёт вектор касательной к кривой в точке на кривой. Соответственно добавив PI/2 получишь нормаль к кривой.
Legantmar:
спасибо.
попробую
Навигация
Перейти к полной версии