Кто-нибудь знает, можно ли/как провести линию между точками, сохраняя при этом определенное расстояние от конечных точек в 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" />
Демонстрацию этого кода можно найти в этой скрипте.
Таким образом, представляется возможным сделать это при расчете
- Угол между направляющей линией и горизонтальной линией
- Синус и косинус угла
- Конечные точки фактической части линии, которую вы хотите нарисовать
Это единственный способ, или SVG может указывать части строк, или есть более умные и удобные способы сделать это?