У кого-нибудь есть идея, можно ли рисовать вдоль линии между точками, сохраняя определенное расстояние от конечных точек в SVG?Как нарисовать часть строки в SVG?
В случае линия горизонтальна (например, от (40,40)
до (100,40)
), можно легко нарисовать линию, которая держит дистанцию около 20
к точкам следующего
<line x1="40" y1="40" x2="100" y2="40" desc="directional line" />
<line x1="60" y1="40" x2="80" y2="40" desc="actual part of line" />
Для диагональных линий, однако, его немного сложнее. Чтобы нарисовать (легкий) диагональную линию от (40,40)
к (100,100)
, вам нужно будет cos(pi/4) = sin(pi/4) = sqrt(2)
масштабировать расстояние, которое вы хотите, чтобы держаться подальше от конечной точки (в данном случае: 20*sqrt(2) = 14.1
)
<line x1="40" y1="40" x2="100" y2="100" desc="directional line" />
<line x1="54.1" y1="54.1" x2="85.9" y2="85.9" desc="actual part of line" />
Демонстрация этого кода может можно найти в этом fiddle
Это, таким образом, представляется возможным сделать это, при расчете
- угла между направленной линией с горизонтальной линией
- Синус и косинус угла
- Концы фактической части линии, которую вы хотите нарисовать
Является ли это единственным способом или SVG способен указать части линий или есть умнее , более удобные способы сделать это?