最初の象限に A(X,Y) と B(P,Q) の 2 つの点があります。別の点 C(L,M) があります。CA と CB の間の時計回りの角度を見つけるにはどうすればよいですか?
私はたくさん検索し、すべてのソリューションで atan2() を使用しましたが、x 軸に対する原点からの角度を見つけます。
C と A は固定と見なすことができます。そして B は第一象限のどこにでもありえます。角度は時計回りで、0 ~ 360 (または 0 ~ 360-1) の範囲内である必要があります。
私はC/C++でこれをやっています。
編集:リクエストごとにコードを追加します。これは少し異なります。なぜなら、私はある概念に行き詰まり、それに関する説明が必要だったからです。この関数は、点 x、y が 50,50 と P の間にある場合に返されます。P は CA に対する角度です。
bool isInsideAngle(long double x,long double y, long double p)
{
if((atan2(y,x) >= atan2(50,100)) && (atan2(y,x) <= (p * PI / 50)))
{
// cout<<"YES!";
// cout<<" atan2(y,x) = " <<atan2(y,x)*180/PI<<endl;
// cout<<" atan2(50,50) = " <<atan2(50,100)*180/PI<<endl;
// cout<<" (p * PI / 50) = "<<(p * PI / 50)*180/PI<<endl;
return true;
}
else
return false;
}