問題に入る前に、いくつかのことを指摘したいと思います。1)cmathライブラリにすでにatan2関数があることを知っています。これは純粋に演習として、そして私自身の練習のためです。2)私はそれを知っています。コードは0を考慮していません。
わかりました。tan(theta)= y / xです。ここで、yとxは平面上の座標です...つまり、次のようになります。
シータ=クワッドIおよびIVではatan(y / x)、クワッドIIおよびIIIではシータ= atan(y / x)+ 180
では、なぜ次のコードを使用するのですか?
float atan(float y, float x)
{
float result = 0.0f;
if (x > 0) //quads I and IV if x is positive
{
result = atanf(y/x);
}
else if (x < 0)
{
result = atan(y/x) + 180; //quads II and III if x is negative
}
return result;
}
それは私にがらくたを吐きますか?たとえば、座標(-4,4)の場合、次の結果が得られます:179.215、135である必要がある場合:
atan(4 / -4)=-45度+180度=135度
しかし、何が起こっているのかはコンピューティングです
atan(4.0f / -4.0f)= -0.785398+180度=179.215。
私はここでいくつかのステップを逃していますか?