我正在为我的游戏创建一个2D关卡编辑器,你可以处理两种类型的几何形状,即圆形和多边形。
我已经得到了它的工作,所以我可以应用任何变换矩阵到多边形,顶点将正确变换。我现在正在考虑如何将变换矩阵应用到圆上。
我的圆是由中心位置和半径定义的。问题是,因为圆只由一个点定义,矩阵缩放操作只会导致圆被平移,而不是缩放。
我不确定这是否有效,但我的解决方案是当圆被转换时,在圆的边缘上放置两个临时顶点在相对的两侧,对这些顶点应用转换,然后重新创建位置(两个顶点之间的中点)和半径(两个顶点之间的距离除以2)。
是否有一个更好/更容易的方法来转换一个圆使用变换矩阵?
我会取两个点:圆心和边缘上的任何点。这样,你已经有了新的中心,你只需要计算距离来得到半径。就像你提议的那样,只是简单了一点。