本文转自:https://blog.csdn.net/u012632138/article/details/81381396
说明:
一个变换矩阵指定了2个坐标空间之间的关系。通过修改变换矩阵,对象可以缩放、旋转、平移等等。
PDF reference1.7.pdf 4.2.2
变换矩阵:
由6个数字来定义。[a b c d e f]
- 平移(translate):[1 0 0 1 tx ty], tx和ty分别是坐标原点在水平和垂直方向的距离。
- 缩放(scaling):[sx 0 0 sy 0 0]。对坐标进行了比例设定,这样新坐标系统里水平垂直尺寸的1个单元,分别跟先前坐标系统里的SX和SY单元的SIZE是一样大小的。
- 旋转(Rotating): [cosa sina -sina cosa 0 0 ],以一个逆时针的角度旋转。
- 切变(Skewing):[ 1 tana tanb 1 0 0 ],根据一个角度来切变x轴和y轴。
组合变换:
一般是先Translate 平移,然后Rotate 旋转,再进行Scale or skew 缩放或切变。
计算:
计算a b c d e f
条件:win: 72dpi
过程: 取特殊点计算.
根据:
Pdf->win
Pdf: (0,0); (0,h); (w,h)
Win: (0,h); (0,0);(w,0)
0 = a*0+ c*0 + e 得出 e = 0
h = b*0 + d*0 + f 得出 f = h
0 = a*0 + c*h 得出 c = 0
0 = b*0 + d*h +h 得出 d = -1
W = a*w 得出 a = 1
0 = b*w 得出 b = 0
前面计算的结果可直接用于下一个等式计算
所以pdf->win 的matrix 为[1 0 0 -1 0 h]
作业
1.计算a b c d e f
条件:win: 72dpi 顺时针旋转90°
过程: 取特殊点计算。
计算pdf->win 的matrix 为[a b c d e f], 要写出计算过程。
2.写出一个PDF文件包含5个矩形,要求如下
1)在x=100, y=600的位置画一个宽为40, 高为50的矩形。
2)将1)中矩形进行平移和Scaling变换,,得到一个宽为240, 高为50,位置x=180,y=600
3) 在x=100, y=500的位置画一个宽为40, 高为50, 逆时针旋转30°的矩形
4)选择适当的位置,画出X轴切变30°的矩形
5)选择适当的位置,画出Y轴切变30°的矩形
统一使用s显示操作符。