进行这种转换的最佳方法是什么:我有 4 对坐标,我需要将图像的角准确地放在它们上面?就像在 Photoshop 中一样,当您处于自由变换模式并按住 ctrl 移动图像的角落时。
类似的东西。
进行这种转换的最佳方法是什么:我有 4 对坐标,我需要将图像的角准确地放在它们上面?就像在 Photoshop 中一样,当您处于自由变换模式并按住 ctrl 移动图像的角落时。
类似的东西。
您可以使用 graphics.drawTriangles。 http://help.adobe.com/en_US/as3/dev/WS84753F1C-5ABE-40b1-A2E4-07D7349976C4.html
这段代码应该做你需要的(未经测试)
graphics.beginBitmapFill(bitmapData);
graphics.drawTriangles(
Vector.<Number>([10,10, 100,10, 10,100, 100,100]),
Vector.<int>([0,1,2, 1,3,2]),
Vector.<Number>([0,0, 1,0, 0,1, 1,1])
);
如果您可以使用 Flash 10drawTriangles()
方法,那么此链接将为您提供一个很好的解释,说明您正在尝试做什么,并提供一些有据可查的功能代码。该代码与 romamik 提供的解决方案非常相似,但是,您需要计算 的正确t
值uvtData
才能使其正确呈现:
从该链接总结:
(1/point_distance)*ratio
计算每个点的透视失真——投影到一个人造 3d 空间(也就是帖子作者所说的“魔法”)这应该会产生您正在寻找的效果。
如果您不能使用drawTriangles()
,那么此链接提供了一种替代方法,但它不会产生与该方法一样好的结果drawTriangles()
。
您可以使用从旧 3D 引擎 Sandy 移植的DistortImage 类。一种更清洁的方法是利用,rotateX
但rotateY
它需要一些数学上的痛苦!