Ali*_*vin 17 geometry geometric-arc
想象一个圆圈.想象一个馅饼.想象一下,尝试返回一个bool,它确定提供的X,Y参数是否包含在其中一个饼图中.
我对弧的了解:
我有CenterX,CenterY,Radius,StartingAngle,EndingAngle,StartingPoint(圆周上的点),EndingPoint(圆周上的点).
给定X,Y的坐标,我想确定该坐标是否包含在饼图幻灯片中的任何位置.
Mat*_*gro 16
使用以下方法将X,Y转换为极坐标:
Angle = arctan(y/x); 半径= sqrt(x*x + y*y);
然后,Angle必须在StartingAngle和EndingAngle之间,并且Radius在0和您的Radius之间.
我知道这个问题很老,但没有一个答案考虑圆弧的位置.
该算法认为所有角度都在0到360之间,并且弧以正数学方向绘制(逆时针)
首先,您可以转换为极坐标:半径(R)和角度(A).注意:如果可用,请使用Atan2功能.维基
R = sqrt((X - CenterX)^ 2 +(Y - CenterY)^ 2)
A = atan2(Y - CenterY,X - CenterX)
现在,如果R <Radius,则该点位于圆内.
要检查角度是否在StartingAngle(S)和EndingAngle(E)之间,您需要考虑两种可能性:
1)如果S <E,那么如果S <A <E,则该点位于切片内
2)如果S> E则有2种可能的情况
那么这一点就在切片内部
那么这一点就在切片内部
在所有其他情况下,该点位于切片之外.