Я хотел бы зеркально отображать произвольные элементы SVG на месте. Это означает, что они должны оставаться в своем нынешнем положении, но получить зеркальное отражение.Зеркальные элементы SVG вокруг своей оси
Я знаю, что могу отражать элементы, используя scale(1, -1)
, а затем переводить их. Но вопрос в следующем: как узнать сумму перевода?
Я думал, что могу рассчитать сумму, добавив высоту элемента и в два раза больше расстояния до оси 0.
Это работает, например, с этим:
<polyline id="line1" stroke="green" stroke-width="1" fill="none"
points="
10, 10
20, 10 20, 20 30, 20 30, 10
40, 10 40, 30 50, 30 50, 10
60, 10 60, 40 70, 40 70, 10
80, 10 80, 50 90, 50 90, 10
100, 10 100, 60 110, 60 110, 10
"
transform="scale(1, -1) translate(0, -70)"
/>
Высота элемента 50, расстояние до 0 оси 10, так что расстояние 50 + 2 * 10 = 70
.
Однако это означает, что расчет отличается от типа элемента (строки, полилинии, прямой, g) и является ли объект уже переведенным.
Есть ли общий способ зеркального отображения элементов SVG?