首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

扇形与圆相交有关问题、大神请进、

2013-09-07 
扇形与圆相交问题、、大神请进、、红色切线在扇形两边线中间,而且圆心距离也小于两半径加和,但是他们是不相交

扇形与圆相交问题、、大神请进、、

红色切线在扇形两边线中间,而且圆心距离也小于两半径加和,但是他们是不相交的。

大神们,发挥高智商吧,小弟没招了。
[解决办法]
是不是可以这样

先通过两圆判相交方式初步判断一下,圆不相交两者肯定不相交,圆相交的话,再通过方程求解判断

扇形可以用两线段加一圆弧函数表示

圆有圆函数方程

分别求是否存在交点

因为扇形包含圆和圆包含扇形的情形已经在初步判断步骤时给排除了
[解决办法]
找出扇形所在的圆与小圆的交点A(x1,y1) B(x2,y2),小于两个交点说明没公共部分
分别计算两点与扇形顶点连线和x轴的夹角
如果扇形的起始角或结束角在这两个夹角中间,就是图形相交的
[解决办法]
把扇形补全成大圆。小圆大圆相离就不相交,小圆包含了大圆圆心则一定相交。否则小圆肯定有一部分在大圆里。算出小圆在大圆内部的角度区间,和扇形本身的角度区间进行比较。
注意角度的比较可以不用直接比较角度,而只用叉乘点乘来实现。
[解决办法]

引用:
把扇形补全成大圆。小圆大圆相离就不相交,小圆包含了大圆圆心则一定相交。否则小圆肯定有一部分在大圆里。算出小圆在大圆内部的角度区间,和扇形本身的角度区间进行比较。
注意角度的比较可以不用直接比较角度,而只用叉乘点乘来实现。
比较赞同这种做法
[解决办法]
扇形圆心(X0,Y0),半径R,两条半径与X轴夹角分别为A,B(B>A)
小圆圆心(X1,Y1),半径r
若扇形和小圆相交,则必然存在点(x,y)满足如下不等式组

(x-X0)^2 + (y-Y0)^2 ≤ R^2
(x-X1)^2 + (y-Y1)^2 ≤ r^2
A≤C≤B, 其中cosC = (x-X0)/((x-X0)^2 + (y-Y0)^2)^(1/2),C为(x,y)和扇形圆心连线与X轴的夹角

若不等式组无解,则扇形与小圆不相交
若有且仅有一个解,扇形与小圆相切
若多余一个解,扇形与小圆相交


[解决办法]
我理解的是两个图形都是面状的
1.可以在扇形四周做一个缓冲区域,即沿着扇形边缘向外垂直其边画出宽度为小圆半径r的区域,只要判断小圆的圆心在该区域内就说两图形相交,扇形两直边两端可能要特殊处理下。一般GIS软件里是这样实现的。

2.因为圆是小圆,可以遍历圆的所有像素点,判断是否有一个像素点在扇形内部。
[解决办法]
在你想到的基础上再加两条,从扇形圆心做圆的两个切线,如果没有切线在扇形两边线中间,则不相交。否则算出小圆圆心到扇形两个尖的距离d1,d2还有到扇形圆心的距离d。
if(d<扇形半径)相交;
else
     if(d1或d2小于小圆半径)相交;
     else 不相交;

热点排行