从矩形变为梯形

时间:2009-12-07 09:11:21

标签: actionscript-3 matrix transform

如何使用ActionScript3

将矩形转换为梯形

我的梯形是3D房间的一层,我想对它进行纹理化(位图图块)。

 _____________
|  |     |   |
|  |_____|   |
|  /      \  |
| / trapez.\ |
|/__________\|

3 个答案:

答案 0 :(得分:3)

这取决于程序中“矩形”的表示方式。几个选项:

  1. 如果您的矩形是矢量,并且您可以访问锚点:

    ---> o------o <---
         |      |
         |      |
         o------o
    

    变为:

           o--o
          /    \
         /      \
         o------o
    

    简单地翻译两个顶点并将它们相互缩小。

  2. 如果'矩形'实际上是DisplayObject,则需要“缝合”同一个DisplayObject中的两个以创建一个新的。 This page提供了您想要的示例以及示例代码。

  3. 另一种选择是使用Papervision3D - 使用上述渲染方法作为基础。

  4. 这个有点棘手,但这是一个选择。您可以按照here所述使用置换贴图。代码是AS2,但“port”应该相当简单。


  5. 修改

    作为标准this answer,我建议您使用Papervision3D(请参阅第3个选项)来执行此操作,因为您可能希望将相机移动到“房间”周围。它也会照顾其他墙壁。

答案 1 :(得分:1)

这个想法是把它分成三角形然后对它们进行仿射变换(使用矩阵)...... senocular provided sample code(针对AS2)......

网上还有一些图书馆,但我现在找不到任何图书......

答案 2 :(得分:0)

如果你的目标是FlashPlayer 10,你可以通过旋转剪辑的旋转值来实现,有关详细信息,请参阅This post form Mike Chambers

否则你将需要像Papervision这样的3D引擎。在Flash Player 9中进行非仿射变换没有简单的方法。

祝你好运。