gpt4 book ai didi

postscript - Postscript 语言中的 Concat 命令

转载 作者:行者123 更新时间:2023-12-02 21:38:03 47 4
gpt4 key购买 nike

我正在使用带有以下内容的 postscript 绘制一个简单的矩形

1 -1 scale
0 -300 translate
newpath
88.9 117.25 moveto
131.6 117.25 lineto
88.9 259.75 lineto
closepath fill

88.9 117.25 moveto
111.4 94.75 lineto
154.1 94.75 lineto
131.6 117.25 lineto
closepath fill
131.6 117.25 moveto
154.1 94.75 lineto
154.1 237.25 lineto
131.6 259.75 lineto
closepath fill
%%EndDocument

结果是一个 3D 矩形。

但是当我添加以下代码时,矩形会以某个角度倾斜。

[ 0.9999999 0 -1 1 261 0 ] concat

我可以理解,这种行为是由于与 CTM 连接的矩阵中使用的值引起的。谁能解释一下上面矩阵中值的使用以及它如何影响绘图的行为?

编辑:

非常感谢您提供的信息。实际上,我正在使用 post 脚本将位图转换为 eps。为此,我将对 Graphics 对象执行的用于绘制位图的所有操作转换为其等效的后脚本命令。

我正在将 C# 中的 g.Transform=matrix 转换为 [matrix.Elements[0] ...... [matrix.Elements[5] ] concat在后脚本中。从我搜索到的内容来看,两者在功能上看起来都与我相似,但绘制的 eps 的结果与位图图像不同。所以,我想知道 postscript 矩阵串联变换是如何工作的。谁能解释一下我转换为 eps 的方法出了什么问题?

最佳答案

当前的 CTM Transformation Matrix ,通常是 3x3 矩阵。在 Postscript 中,它表示为 6 元素数组,因为 3x3 CTM 中的 3 个元素是常量。 Postscript CTM 数组

[a b c d tx ty] 

对应于3x3 CTM矩阵

 a  b  0
c d 0
tx ty 1

尽管它经常以转置形式出现(如链接的文章中所示):

 a  c  tx
b d ty
0 0 1

无论如何,txty 控制翻译,其他值组合起来进行其他转换。一些abcd模式会导致命名变换:旋转、缩放、反射和剪切。您给出的适合剪切模式(如果我们将 0.9999999 视为 1):1 0 k 1,其中 k 是剪切量,在您的情况下为 -1 .

关于postscript - Postscript 语言中的 Concat 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20954148/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com