如何在Pharo Smalltalk中使用Athens/Cairo进行透视变换

7

我在Pharo Smalltalk的Athens/Cairo中找到了仿射变换功能(旋转、倾斜、平移、缩放)。

我正在寻找透视变换。这是否可能?至少在Cairo API中似乎没有方便的方法来实现这一点。

透视变换


此外,您应该在Pharo邮件列表中提问。 - Sebastian N.
1
我几年前曾向Cairo列表询问过这个问题,针对VisualWorks端口。他们说没有。尽管开发者们对为ImageSurface模式提供这样的方法表现出了一些兴趣。但我认为这从未发生过。 - Travis Griggs
2个回答

6

没有透视变换,因为计算中使用的矩阵是2x3仿射矩阵,不能产生这样的转换(在二维坐标空间上的比例/旋转的任何组合都不能产生这样的结果)。 OpenGL使用完整的4x4矩阵进行坐标变换(通常是3x3 + 平移列),但足以创建透视投影等变换。


2

我一直对这种变换很感兴趣。

不仅在Pharo上,还包括Java(Java2D)或HTML5画布等其他平台。

到目前为止,我的研究表明似乎不可能做到这一点。

似乎这些库根本没有考虑过3D或者3D支持。我所找到的建议主要有以下两点:

  • 应该使用OpenGL来完成
  • 在Cairo/Java2D/canvas的基础之上实现变换

我并不想显得太消极,只是想分享一下我的搜索结果,也许能为你节省一些时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接