判断线段与圆是否相交 |
您所在的位置:网站首页 › 直线与圆相切算有交点吗 › 判断线段与圆是否相交 |
判断线段与圆是否相交
一、知识点 1、判断点是否在圆内的方法:设点到圆心的距离为d,圆的半径为r,那么有 dr在圆外 (其中d可由两点距离公式求出)
2、已知两点p1(x1,y1)、p2(x2,y2),求直线p1p2的一般式方程Ax+By+C=0 先求出两点式直线方程,然后由两点式直线方程求出一般式方程 3.点到直线的距离公式 点(x,y)到直线Ax+By+C=0的距离公式为 4、余弦定理 二、判断线段与圆是否相交 情况一、两点都在圆内。不相交 情况二、一个点在圆内,一个点在圆外。相交 情况三、两个点都在圆外 设点p1和p2均在圆外,判断线段p1p2与圆是否相交的方法 1、求出直线p1p2的一般式方程 2、用距离公式判断圆心到直线p1p2的距离是否大于半径:距离大于半径,则不相交;距离小于等于半径,执行3 3、设圆心为o,使用余弦定理判断角op1p2和角op2p1是否都为锐角,都为锐角则相交,否则不相交。 注意:可用向量来实现余弦定理 三、C++实现 //点 struct Point{ double x,y; Point(){} Point(int x,int y):x(x),y(y){} }; //圆 struct Circle{ double r,x,y; Circle(){}; Circle(double r,double x,double y):r(r),x(x),y(y){} }; //判断直线p1p2与圆c是否相交,相交返回true,否则返回false bool judge(Point p1,Point p2,Circle c) { bool flag1=(p1.x-c.x)*(p1.x-c.x)+(p1.y-c.y)*(p1.y-c.y)0&&angle2>0)//余弦为正,则是锐角,一定相交 return true; else return false; } }
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |