Тема временно закрыта. Оказывается проблема не в моем коде, а в работе SVG.
Дело в том, что если на плоскости есть квадрат, и сделать сначала перенос его таким образом, чтобы ближайший к началу координат угол совпал с началом координат, а затем повернуть, то:
а) в учебниках по матрицам квадрат должен развернуться вокруг начала координат
б) а в SVG он вращается вокруг точки -x, -y (где x, y та точка квадрата что совпала с началом координат после перемещения). То есть точка вращения тоже переместилась!!! Вот отсюда все мои проблемы и исходят. А код похоже верный.
Сейчас читаю спецификацию SVG и пытаюсь понять как это вообще произошло, можно ли это отключить, а если нет, то надо как-то по-другому считать.
|