我试图实现一个简单的反射精灵效果。想象一条从屏幕的一角到另一角的对角线。然后,将精灵(或图像)旋转特定量并放置在对角线一侧的某个位置。以编程方式旋转将放置在屏幕反射面上的精灵(或图像)的另一个实例的数学公式是什么?我很容易弄清楚反射是垂直的还是水平的(图像的简单翻转),我可以找出放置生成的精灵的位置,但它似乎是一个完全不同的复杂程度,试图确定最终的精灵。角。
任何建议或编程公式?我一般发现三角学很糟糕,找不到任何线索。同样,反射线的角度已知(或可以找到),原始精灵的角度也是如此。我只是想确定在显示时如何旋转反射的精灵。
答案 0 :(得分:0)
如果我理解正确,那么它应该简单到确保反射的精灵的角度(相对于对角线)与原始精灵的角度(再次对角线)相同但是为负。 / p>
在图像中显示此内容(左下方的原始精灵和右上角的反射):
因此,如果您查看角度θ 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 相反。请记住在应用此旋转之前翻转反射的精灵(假设绿色箭头是您将其翻转的轴)。