好吧,如果您打算进行更多图形游戏编程,我建议您至少瞄准数学的未成年人。
不过,真的,如果你确实继续做这样的图形工作,那么学习三角学、矩阵代数和向量代数的知识将是一个非常好的主意。使用向量和矩阵可以使更复杂的变换(例如透视投影)更容易,并且还可以帮助进行更简单的变换,例如等距变换。
无论如何(其中一些,如果不是很多,可能会为你复习):实际上,所谓的“图形变换”所做的是通过平移、旋转、比例的某种组合对点进行字面变换,反射和剪切;对于二维坐标系,这些概念中的大多数您应该很熟悉,并且可以相当简单地表达出来。在下面的例子中,我将使用由两个点定义的线段,以“(x1, y1), (x2, y2)”的形式表示;您可能想将它们画在一张方格纸或其他东西上以便于理解。
示例:翻译将从 (0, 0)、(1, 0) 到 (1, 0)、(2, 0),或从 (0, 0)、(1, 0) 到 (0, 1) ), (1, 1); 旋转将从 (0, 0), (1, 0) 到 (0, 0), (0, 1);缩放将从 (0, 0), (1, 0) 到 (0, 0), (2, 0) 或从 (0, 0), (1, 0) 到 (0, 0), (0.5 , 0)。
使用更简单的表示法,单个点 (x, y) 的平移可以表示为 (x + a, y + b),其中 a 和 b 是所有实数范围内的常数。旋转为 (x*cos(theta), y * sin(theta)),其中“theta”是您希望旋转的角度值,比例为 (a x, b y),带有是沿 x 轴的比例因子,b 是沿 y 轴的比例因子。(统一比例是两个轴的比例因子相等的比例,(a x, a y) 也是如此。)
组合简单的变换可以让您随意移动对象,而组合简单变换的最简单方法是使用矩阵乘法。
...实际上,这种事情你可能最好通过自学或某种数学课来学习,因为我现在意识到,我自己甚至要花太多时间让你开始学习理解这些东西,但我会给你我现在能找到的其他参考资料。
http://en.wikipedia.org/wiki/Transformation_(geometry )
http://en.wikipedia.org/wiki/Transformation_matrix
http://en.wikipedia.org/wiki/Euclidean_vector不是。)
无论如何...虽然您可以简单地使用您在网络上某处找到的变换方程,但最好了解变换的实际工作原理并学习如何自己应用它们,因为它可以让您更加灵活并且能够做到如果需要,可以以不同的方式进行转换,也可以让您自己进行更复杂的转换。
我希望这对您有所帮助;这可能不是您可能想要的直接答案,但如果您愿意投入时间和精力自学(或被教导,如果您决定在某个地方上课[毕竟,自学是'不适合所有人])如何使用矩阵和矩阵变换等,您可能会发现自己更了解您正在尝试做的事情。
编辑:当然,如果您已经定义了图形变换并且不必自己担心它们,那么在 3D 空间中平行于任何轴的任何平面上移动一个点是非常容易的。基本上,在内存中,这些点位于(或应该位于)“正常维尔”中,用你的话来说,是三维笛卡尔坐标系。假设发生移动的平面是平面 z = 0,并且该点的坐标以等价于 (x, y, z) 的格式存储,您可以简单地使用 (x + 10, y, 0) 或 (x, y + 10, 0);如果你有一个点比其他点在更高的平面上,你只需为 z 设置一个更高的值(如果你在更低的平面上有一个点,你设置一个 z < 0 的值)。一旦你将移动应用到点本身,如果您还没有这样做,您可以将图形转换应用到环境中,这样可以将其设置为在您的输出设备(在您的情况下为 iPhone)上正确显示。应用转换比这要复杂一点,但如果你有一个预先编写的方法来做到这一点,那么你就准备好了。