python判断两线段是否相交_判断线段与圆是否相交(计算几何)

线段与圆有三种位置关系,通过线段两个端点来看:

1:两个端点都在圆内, 一定不相交, 可以把两个点带入圆的方程判断 是否小于0

2:两个端点,一个在圆内,一个在圆外, 一定相交, 同样 点带入方程 判断

3:两个端点都在外面, 此时略微麻烦, 可以通过点到直线的距离来判断,但是当直线和圆心一条直线时,此时需要特别处理

光有距离判断是不行的. 要通过角度来判断.-->余弦方程 转换成向量表示

3c630bdba63dda0370a2fa929047511f.png

[代码实现]

可能比较难看懂, 因为坐标用的pair写的 frist是x,second是y

double x,y,r;

vector > V;

typedef pair PAIR;

PAIR yuan;

bool judge(PAIR P)// 判断是否在圆内

{

if( (P.first-x)*(P.first-x) + (P.second-y)*(P.second-y) -r*r <=0)

return 1;

return 0;

}

bool Judis(PAIR P1,PAIR P2,double R) //线段与圆的关系

{

if(judge(P1)&&judge(P2))//都在圆内 不相交

return false;

if(!judge(P1)&&judge(P2)||judge(P1)&&!judge(P2))//一个圆内一个圆外 相交

return true;

double A,B,C,dist1,dist2,angle1,angle2;//Ax+By+C=0;//(y1-y2)x +(x2-x1)y +x1y2-y1x2=0

if(P1.first==P2.first)

A=1,B=0,C= -P1.first;

else if(P1.second==P2.second)

A=0,B=1,C= -P1.second;

else

{

A = P1.second-P2.second;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值