Справа таке, getComputedStyle (element) .getPropertyValue ( "transform") повертає matrix (a, c, b, d, tx, ty). C translate все начебто просто: translateX = tx. translateY = ty. А ось як витягнути scale, rotate, skew я трохи не розумію тому як у перших в rotate і scale повинні бути градуси, по-друге: ніби як skewX = b. skewY = c. а scaleX = a. scaleY = d. але при цьому що б повернути елемент в матриці a = cos (x). b = sin (x). c = -sin (x). d cos (x). Вообщем з набору параметрів matrix я б ще склав а ось з matrix витягнути параметри взагалі не розумію як. Підкажіть будь ласка як перевести матрицю в зрозумілий простій людині мову або підкажіть як можна отримати властивість transform не в matrix. а в scale. rotate. translate. skew?
заданий 8 дек '15 о 19:55
У чернетці специфікації описано які значення, що означають.
Трансформації здійснюються за допомогою матриці трансформацій, в загальному випадку (3D) матриця 4х4
Матриця, яку ви отримуєте matrix (a, c, b, d, tx, ty) представляється в наступному вигляді:
Як ви правильно зазначили: tx, ty - відповідають за переміщення.
За масштабування відповідають значення лежить на головній діагоналі, в нашому випадку це a, d. при це a - масштабування по ширині, d - по висоті.
c, b - відповідають за нахил
і все разом a, b, c, d - за поворот.
Детальніше можна побачити на зображенні
@ Kirpich643, насправді, якщо застосовано відразу кілька перетворень, то визначити їх досить нетривіально, так як перетворення являють собою твір матриці на вектор або складання матриць, і так як у нас є всього два стану: початкова - фактично одинична матриця, і кінцеве - то вельми проблематично дізнатися вектора на які ми множили матрицю - Grundy 9 дек '15 в 6:13