gpt4 book ai didi

c++ - 找到相对于任意原点的两点之间的顺时针角度

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:52 25 4
gpt4 key购买 nike

我在第一象限中有两个点 A(X,Y) 和 B(P,Q)。还有一个点C(L,M)。如何在顺时针方向找到 CA 和 CB 之间的角度?

我搜索了很多,所有的解决方案都使用了 atan2() 但它找到了原点相对于 x 轴的角度。

C and A can be assumed fixed. And B is can be anywhere in the first quadrant

可以假定 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;

}

最佳答案

How do I find angle between CA and CB in clockwise direction?

// The atan2 functions return arctan y/x in the interval [−π , +π] radians
double Dir_C_to_A = atan2(Ay - Cy, Ax - Cx);
double Dir_C_to_B = atan2(By - Cy, Bx - Cx);
double Angle_ACB = Dir_C_to_A - Dir_C_to_B;

// Handle wrap around
const double Pi = acos(-1); // or use some π constant
if (Angle_ACB > Pi) Angle_ACB -= 2*Pi;
else if (Angle_ACB < -Pi) Angle_ACB += 2*Pi;

// Answer is in the range of [-pi...pi]
return Angle_ACB;

关于c++ - 找到相对于任意原点的两点之间的顺时针角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41518021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com