gpt4 book ai didi

ios - 如何将 Sprite 扭曲为梯形?

转载 作者:行者123 更新时间:2023-12-01 19:29:15 25 4
gpt4 key购买 nike

我正在尝试将 Sprite 转换为梯形,我并不真正关心插值,即使我知道没有它我的图像会丢失细节。我真正想做的就是将我的矩形 Sprite 变成这样的梯形:

  /      \  
/ \
/__________\

有没有人用 CGAffineTransforms 或 cocos2d 做过这个?

最佳答案

您提出的转换不是仿射的。 Affine transformations必须是可撤销的。所以他们通常可以:

  • 规模
  • 旋转
  • 剪切(使不平衡,像正方形 -> 平行四边形)
  • 翻译

  • 但他们不能“挤压”。请注意,梯形的左侧和右侧如果延伸,将在特定点相交。它们不再平行。所以你不能“撤销”转换,因为如果在那个地方有任何东西要转换,你无法决定它们会转换到哪里。换句话说,如果一个转换不保持并行性,它就会压缩空间,无法撤消,也不是仿射的。

    我对 Core Animation 中的转换知之甚少,所以我希望数学的东西可以帮助您找到替代方案。

    但我确实知道如何在 OpenGL 中做到这一点,但这需要您重新开始绘制应用程序:
  • 如果我正确地设想了您想要的结果,您希望在 3D 中构建您的矩形,使用仿射变换将其旋转一点,并使用(非仿射)投影变换将其展平为 2D 图像。
  • 如果您不是在寻找 3D 效果,但您真的只是想捏住角落,那么您可以指定 GL_RECT使用梯形的点并将您的 Sprite 映射到其上作为纹理。

  • 最简单的方法可能是在照片编辑器中预先压缩您的图像,将其保存为具有透明度的 .png,然后使用该图像绘制一个矩形。

    关于ios - 如何将 Sprite 扭曲为梯形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095824/

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