Как получить подсегменты векторных кривых одинаковой длины?

Я использую библиотеку Raphael Javascript для построения кубических кривых Безье. Мне нужно получить прямой сегмент в самом конце моей кривой, который имеет постоянную длину, независимо от длины или структуры большей кривой. Однако, когда я помещаю одну точку в конец кривой и пытаюсь расположить вторую на 25 единиц назад от первой, фактическое расстояние между точками меняется по мере изменения кривой. Есть ли способ получить прямой сегмент в конце моей кривой, который всегда имеет одинаковую длину в пикселях? Я предполагаю, что это связано с тем, что векторные единицы преобразуются в реальные пиксели на экране, но я нашел мало информации о том, как исправить такие несоответствия. Спасибо за любую помощь, которую вы можете предоставить!


person ShadesOfGrey    schedule 05.04.2011    source источник
comment
Пожалуйста, уточните, что вы подразумеваете под «постоянной длиной». Вы имеете в виду взять круг радиусом 25 с центром в конце пути и найти точку, где этот круг пересекает кривую, или вы имеете в виду найти точку вдоль извилистой дороги, определяемой кривой, которая находится на расстоянии 25 пикселей от конца?   -  person Phrogz    schedule 06.04.2011


Ответы (1)


Если вы ищете длину вдоль пути, вы хотите использовать getPointAtLength()< /а>:

var pt = myPath.getPointAtLength( myPath.getTotalLength() - 25 );

Это даст вам SVGPoint в локальном пространстве родителя дорожка.

Вы можете увидеть пример использования этого метода (и других) для регулярной выборки вдоль пути здесь:
http://phrogz.net/SVG/convert_path_to_polygon.xhtml

person Phrogz    schedule 05.04.2011