后记语言中的Concat命令

 yuhao 发布于 2023-02-06 11:36

我正在使用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 script将位图转换为eps.为此,我将在Graphics对象上执行的所有操作转换为等效的post script命令.

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

1 个回答
  • CTM是电流变换矩阵,通常是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.

    2023-02-06 11:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有