Ответ 1
В Рафаэле практически нет хорошей, четкой информации о Матрице. Тем не менее, хорошая новость заключается в том, что это почти то же самое, что преобразования Matrix в SVG, а также CSS3.
Есть несколько руководств по преобразованию матриц в SVG, но они обычно предполагают, что вы уже понимаете математические математические вычисления. Не очень полезно, если вы этого не сделаете.
Однако есть одно хорошее руководство по математике в CSS3. Он также поставляется с Matrix Construction Set (по состоянию на февраль 2013 года он не работает в Chrome, но работает в Firefox). Поскольку математические принципы матричных преобразований CSS3 и Raphael по существу одинаковы, вы можете использовать этот инструмент для создания набора чисел матричного преобразования, а затем применить их в Raphael, и это должен быть более или менее одинаковый результат.
Супер-быстрый обзор того, что Матричные преобразования:
- Это набор из 6 чисел, которые используются для вычисления, где каждый угол ограничивающей рамки формы Рафаэля будет после завершения преобразования. Между ними эти 6 чисел могут создавать практически любые эффекты масштаба, трансформирования, поворота и сдвига.
- Это за кадром движок для преобразований Рафаэля: Рафаэль переводит преобразования в матричные координаты. Матричные координаты могут серьезно поразиться: если вы делаете что-то чрезвычайно сложное, обычно лучше всего просто позволить ему делать это под капотом.
- Здесь шутка XKCD, иллюстрирующая математическую связь между 6 числами за матричными преобразованиями. Вы либо найдете это смешным, либо убедите вас, что лучше всего позволить Рафаэлю делать сами математику под капотом. .
- Чтобы посмотреть состояние текущей матрицы элементов:
- Чтобы напрямую посмотреть на элемент-матрицу:
someElement.matrix
- это объект с каждым числом, заданным буквой (например,{a:1,b:0,c:0,d:1,e:0,f:0}
). Установка этих параметров напрямую не изменяет объект (поэтому вы не можете сделатьsomeElement.matrix.b = 3;
) - Вы можете преобразовать текущую матрицу в более удобный для человека объект, содержащий атрибуты преобразования, используя
someElement.matrix.split()
- Вы также можете перевернуть матрицу в строку преобразования с помощью
someElement.matrix.toTransformString();
- Чтобы напрямую посмотреть на элемент-матрицу:
- Если вам нужно установить матрицу вручную, вы можете сделать это одним из этих способов. Все они заменяют или оживляют предыдущее преобразование:
- Анимированный (с использованием массива):
someElement.animate({transform: ['m',0.5, -0.5, 0.5, 0.5, -0.5, 0.5]}, 1000);
- Мгновенный (с использованием массива):
someElement.transform(['m',0.5, -0.5, 0.5, 0.5, -0.5, 0.5]);
- Анимированная (с использованием строки):
someElement.animate({transform: 'm0.5 -0.5 0.5 0.5 -0.5 0.5'}, 1000);
- Мгновенный (с использованием строки):
someElement.transform('m0.5 -0.5 0.5 0.5 -0.5 0.5');
- Анимированный (с использованием массива):
- Это строка матрицы по умолчанию:
1 0 0 1 0 0
. Применяя это, сбрасывается преобразование в состояние по умолчанию. - То, что означает каждый номер матрицы, очень сложно охарактеризовать. В отдельности
a
работает как x-scale,b
как y-shear,c
как x-shear,d
как y-scale, иe
иf
как x и y перемещаются. Но они взаимодействуют математически сложными способами. Это не просто.