GLSL (具体的には私が使用している 3.00) には 2 つのバージョンがあります
atan()
: atan(y_over_x)
-PI/2、PI/2 の間の角度のみを返すことatan(y/x)
ができますが、4 つの象限すべてを考慮に入れることができるため、角度範囲は -PI からすべてをカバーします。 PI、 atan2()
C++とよく似ています。
atan
2番目を使用してXY座標を角度に変換したいと思います。ただし、atan()
GLSL では、 の場合に処理できないほか、x = 0
あまり安定していません。特に がx
ゼロに近い場合、除算がオーバーフローして結果の角度が反対になる可能性があります (約 PI/2 になるはずの場所で -PI/2 に近い値が得られます)。
atan(y,x)
より堅牢にするために GLSL の上に構築できる優れた単純な実装は何ですか?