0

我正在尝试实现一个简单的反射精灵效果。想象一条从屏幕一角到另一角的对角线。然后,将精灵(或图像)旋转特定的量并放置在对角线一侧的某个位置。以编程方式旋转将放置在屏幕反射侧的精灵(或图像)的另一个实例的数学公式是什么?我很容易弄清楚反射是垂直的还是水平的(图像的简单翻转),我可以找出放置结果精灵的位置,但尝试确定结果精灵的复杂程度似乎完全不同角度。

有什么建议或编程公式吗?我通常对三角函数很讨厌,找不到任何线索。同样,反射线的角度是已知的(或可以找到),原始精灵的角度也是如此。我只想确定反射的精灵在显示时将如何旋转。

4

1 回答 1

0

如果我理解正确,那么它应该像确保反射精灵的角度(相对于对角线)与原始精灵的角度(同样是对角线)相同但为负值一样简单。

在图像中显示这个(原始精灵在左下角,反射在右上角):

反射一个角度

因此,如果您查看角度 θ I1和 θ R1,您可以看到:
θ I1是原始图像与对角线之间的角度
θ R1是反射图像与对角线之间的角度

这些角度相等且相反,即 55° 和 -55°。


不过,这可能不足以让您计算出一般情况下所需的旋转,所以我将更详细地介绍。基本上,就像我之前说的,反射精灵与线条之间的角度需要与原始精灵与线条之间的角度相等且相反。这与确保每个精灵和线之间的角度差相对于公共参考方向相等且相反是相同的。

再次查看图像,假设公共参考方向向右。只要你保持一致,你是否把它做成别的东西都没关系。还假设每个精灵上的绿色箭头在精灵旋转 0° 时将指向平行于参考方向。

因此,考虑到这一点,您可以看到线 θ L的角度为 35°(正向旋转为顺时针方向)。

您还可以看到原始精灵的旋转 θ I2为 45°。

所以原始精灵和直线之间的角度是 θ I2 - θ L,等于 10°。

再一次,每个精灵和线之间的角度需要相等且相反。那是:

θ I2 - θ L = -1 * (θ R2 - θ L )

要找到反射精灵所需的旋转,只需将该等式重新排列为:

θ R2 = 2θ L - θ I2

输入 θ L和 θ I2的值给出:

θ R2 = 2*35° - 45° = 25°


所以在这个例子中,反射精灵的旋转 θ R2被计算为 25°,你可以从图像中看到这是正确的。如果您想仔细检查,请注意反射精灵与线之间的角度差 (θ R2 - θ L ) 为 -10°,这与 θ I2 - θ L相等且相反。请记住在应用此旋转之前翻转反射的精灵(假设绿色箭头是您翻转它的轴)。

于 2013-11-04T10:10:10.053 回答