我正在尝试解决一个简单的任务,但是我没有找到任何优雅的解决方案。 我主要在解决两个圆形扇区的交集问题。每个扇区由2个角度(从atan2函数)给出,范围为(-pi,pi]。每个选择器占据最大角度为179.999。因此,可以告诉每两个角度之间的圆形扇区所在位置。 根据以下内容,返回值应描述互相交叉:如果一个角度包含在第二个角度中,则value<1(value表示百分比占用空间的大小) 如果第一个角度(虚线)在另一个角度外部,则value>1(value表示虚线角度超出另一个角度的程度) 下面是一些基本情况和示例图像。问题在于有许多需要处理的情况,我正在寻找一些优雅的方法来解决它。只有当两个角在单位圆的右侧(cos> 0)时,我才能比较它们,因为在左侧,数值上更大的角在图形上更低。我尝试在右侧使用一些投影:
if(x not in <-pi/2, pi/2>)
{
c = getSign(x)*pi/2;
x = c - (x - c);
}
但是有一个问题,涉及到占据单位圆的两个半部分的扇形...
有很多情况需要考虑... 有人知道怎样优雅地解决这个问题吗? (我使用c++,但任何提示或伪代码都可以)