(转) CSS3 transform 中的 matrix
其他文献1
学习笔记
位移 translate
旋转 rotate
偏移 skew
缩放 scale
Matrix的中文是矩阵,在计算机科学中,会用矩阵来对向量进行变换,
在css3的transform属性中,可以使用矩阵对图像进行变换
css3里面可以用矩阵表示2D和3D转换
===================================================================================
2D的转换是由一个3*3的矩阵表示的
.demo{
transform:matrix(a,b,c,d,e,f)
}
第一行代表的是X轴变化,
第二行代表的是Y轴的变化,
第三行代表的是Z轴的变化,2D不涉及到Z轴,这里使用 0 0 1
公式I
___________ _____ ___________________
| a c e | | x | | ax + cy + e
| b d f | * | y | = | bx + dy + f
| 0 0 1 | | 1 | | 0x + 0y + 1
1. 缩放scale(x,y)
缩放对应的是矩阵中的a和d,
x轴的缩放比例对应a,
y轴的缩放比例对应d。
matrix(a, 0, 0, d, 0, 0);
_________
| a 0 0 | x = ax + cy + e => ax 是缩放
| 0 d 0 | y = bx + dy + f => dy 是缩放
| 0 0 1 | z = 0x + 0y + z =>
2. 平移 translate(x, y)
平移x => e
平移y => f
matrix(1, 0, 0, 1, e, f)
_________
| 1 0 e | x = ax + cy + e => e 是平移
| 0 1 f | y = bx + dy + f => f 是平移
| 0 0 1 | z = 0x + 0y + z =>
3. 旋转 rotate(θdeg) ???
a = cos(θ)
b = sin(θ)
c = -sin(θ)
d = cos(θ)
x1 = cos(θ)x0 - sin(θ)y0 + e
y1 = sin(θ)x0 + cos(θ)y0 + f
// 弧度和角度的转换公式:弧度=π/180×角度
const radian = Math.PI / 180; // 单位弧度
4. 一个元素在二维平面上的倾斜转换 skew(xdeg,ydeg) ???
MDN skew
x 轴和 y 轴,分别对应矩阵中的 c 和 b。
b=tan30° => y轴
c=tan20° => x轴
公式II
___________ ___________ __________________________________________________
| a c e | | A C E | | (aA + cB + eG) (aC + cD + eH) (aE + cF + eI) |
| b d f | * | B D F | = | (bA + dB + fG) (bC + dD + fH) (bE + dF + fI) |
| g h i | | G H I | | (gA + hB + iG) (gC + hD + iH) (gE + hF + iI) |