2012-01-05 259 views
1

我正在开发一款游戏,我正在编写一个Entity基类。由于许多实体的行为与粒子(2D)类似,我想使用法线而不是以度为单位的旋转。然而,因为我使用的是OpenGL,我需要让法线的程度旋转。什么是从法线转换为法度的最快方式,反之亦然。我知道我可以使用三角函数,如atan2sincos等,但我很确定有一个更快的方法。任何帮助或方向将不胜感激。如何将法线转换为度数?

enter image description here

+0

法线从表面总是90度。我不知道你在追求什么... – MichaelHouse 2012-01-05 00:36:07

+0

没有它的两个维度。生病做一张图。 – 2012-01-05 00:36:45

+0

如果我无法弄清楚,我可能只是做一个查找表。 ':P – 2012-01-05 00:45:43

回答

8

如果你受限于两个方面和你想要的方向向量(X,Y)与x轴转换为度,然后atan2(y, x)几乎肯定会是最快方法,除非你将x和y的可能值限制在一些相当平凡的情况下。当然,要从y轴获得度数,只需使用atan2(x, y)即可。这个角度将以弧度表示。乘以180/pi转换为度数。这应该需要微不足道的时间。

你正在绘制的图表显示atan2(x, y) * 180/Math.PI会给你你想要的结果。

不要关心速度,除非您已经对代码进行了剖析并确定此计算存在瓶颈(这不太可能)。

+0

Upvoted for the final段,很多人犯了这个错误。 – SHiRKiT 2012-01-05 01:13:45