参数在PDFBox矩阵中是什么意思

g3blv

我遵循了此示例“创建横向PDF”,并且效果很好。我现在想将0,0参考从左下角移到左上角。为此,我需要改变contentStream.transform(new Matrix(0, 1, -1, 0, pageWidth, 0));我看过PDFBox Matrix的文档,该文档详细说明了Matrix以下参数

public Matrix(float a,
      float b,
      float c,
      float d,
      float e,
      float f)
Creates a matrix with the given 6 elements.

但这并没有告诉我这6种不同的论点/要素的作用。我猜一个与旋转有关,另外两个与在X和Y方向上移动参考有关。在哪里可以找到描述自变量的文档?

mkl

在哪里可以找到描述自变量的文档?

要查找的文档是结合了一些线性代数101的PDF规范(ISO 32000-1)。

PDF中的转换矩阵应由六个数字指定,通常采用包含六个元素的数组形式。以其最一般的形式,此数组表示为[ abcdef ];它可以表示从一个坐标系到另一坐标系的任何线性变换。

(第8.3.3节-常见转换)

此后不久将解释其含义:

PDF代表二维空间中的坐标。这种空间中的点(x,y)可以矢量形式表示为[ xy 1]。该向量(1)的常数第三个元素是必需的,以便该向量可以在下面所述的计算中与3×3矩阵一起使用。

两个坐标系之间的转换可以用如下编写的3×3转换矩阵表示:

ab 0 cd 0 ef 1

因为转换矩阵只有六个可以更改的元素,所以在大多数情况下,在PDF中,应将其指定为六元素数组[ abcdef ]。

坐标变换应表示为矩阵乘法:

转型

(第8.3.4节-转换矩阵)

因此,当当前设置了转换[ abcdef ]并使用坐标(x,y绘制对象时,它将出现在坐标(x',y')处,其中

作为坐标方程的变换

常用的转换类型有:

  • 平移应指定为[1 0 0 1 t x t y ],其中t xt y分别是在水平和垂直维度上平移坐标系原点的距离。

  • 缩放比例应为[ s x 0 0 s y 0 0]。这将缩放坐标,以使新坐标系的水平和垂直维度中的1单位分别与先前坐标系中的s xs y单位具有相同的大小

  • 旋转应由[cos(q)sin(q)-sin(q)cos(q)0 0]产生,其作用是使坐标系轴逆时针旋转角度q

  • 偏斜应由[1 tan(a)tan(b)1 0 0]指定,该偏斜会使x倾斜角度为ay轴倾斜角度为b

(第8.3.3节-常见转换)

如果要组合转换,只需按适当的顺序将矩阵相乘即可​​。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章