跳到主要内容

pdf坐标变换

一个变换矩阵指定了2个坐标空间之间的关系。通过修改变换矩阵,对象可以缩放、旋转、平移等等。

pdf坐标空间

坐标空间决定了各个pdf对象如何显示。对象的位置、大小、转向等信息,这些信息的表示采取的是笛卡尔坐标系,坐标空间由如下三个因素决定:

  • 坐标原点位置
  • 坐标系X轴、y轴的方向
  • 坐标系每个轴的单位长度

每个坐标空间之间的数据映射关系由转换矩阵决定。简单的解释即:y(目标空间)=A(变换矩阵)x(源空间)+b(常向量)

PDF中坐标系统分为设备坐标空间和用户坐标空间。

  • 设备坐标空间(device space):决定了pdf对象最终的显示效果
  • 用户坐标空间(User space):PDF为不同的对象定义了不同的坐标空间,比如文字对应文字坐标空间 【text space】,字形、表单对象、位图、颜色模式等

坐标变换

坐标转换矩阵定义了各个坐标空间之间的关系。坐标转换主要包含了几何学中的的基础变换关系:平移、缩放、旋转、拉伸等四种变换。

PDF系统中变换矩阵采取如下向量表示:

(a b 0) (c d 0) (e f 1)

(a b 0) (x',y',1)=(x,y,1)*(c d 0) (e f 1)

x'=ax+cy+e y'=bx+dy+f

由于变换矩阵中用于二维坐标系统时,变换矩阵第三列总是(0 0 1),因此pdf文件中变换矩阵定义为(a b c d e f)

平移变换(translate)

矩阵: (1 0 0 1 tx ty) 即

x'=x+tx y'=y+ty

变换后,坐标原点移位,其余不变。

缩放变换(scaling)

矩阵:(sx 0 0 sy 0 0) 即

x'=sxx y'=syy

缩放变换后,坐标轴单位变为sx,sy,轴与原点方向不变。

旋转变换(Rotating)

矩阵: (cosθ sinθ -sinθ cosθ 0 0) 即

x'=xcosθ-ysinθ y'=xsinθ+ycosθ

θ为旋转角度,逆时针旋转时角度为正。

旋转变换后,坐标轴单位、原点不变,轴方向改变角度θ。

斜变形变换

矩阵:(1 tanα tanβ 1 0 0)

x'=x+tanαy y'=tanβx+y

斜变形变换后,坐标原点、单位不变,x轴逆转α度,y顺转β度。

坐标变换示意图如下(图片来源于网络)

注:

  • 坐标转换作用于坐标空间而非对象本身。对象的绘制是在转换空间计算完成之后进行。
  • 由于矩阵计算的不可逆性,坐标转换不能随意交换,交换会导致不同的显示效果。一般说来若要正确显示对象,坐标变换顺序应该是:平移、旋转、缩放或斜变形.