Важно понимать, что SVG-преобразования применяются последовательно, то есть порядок имеет значение. Вы не можете просто сложить числа, чтобы объединить список различных определений преобразования. В словах spe c:
Значение атрибута 'transform' является , который определяется как список определений преобразования, которые применяются в указанном порядке.
Каждое определение преобразования этого списка управляет системой координат, которая является основой для всех последующих преобразований. Хотя в вашем примере переводы номинально одинаковы в противоположных направлениях, они не отменяются, потому что масштабирование, которое происходит между ними, изменяет систему координат на этом пути. Таким образом, второй перевод не охватывает то же расстояние, что и первый.
Чтобы понять, почему эти преобразования удерживают центроид, полезно записать их более формально. Учитывая coodinates центроида (x c, y c) и коэффициент масштабирования k мы можем написать их как:
x ↦ x c + k ( x - x c)
y ↦ y c + k ( y - y c)
Каждый исходный пункт ( x, y) отображается на центроид (первые члены), а затем перемещается наружу в исходное положение, но перемещается только уменьшенная часть исходного расстояния (вторые члены).
Подключение Сам центроид в этих правилах показывает отмену второго слагаемого, который удерживает центроид в его первоначальном месте, посредством чего центрирует всю трансформацию на центроиде:
x c ↦ x c + k ( x c - x c) = x c
y c ↦ y c + k ( y c - y c) = y c