-
2020-12-21 14:55:22
Question:
c++实现判断点与圆的位置关系
(1)点在圆上
(2)点在圆内
(3)点在圆外
c++代码实现:
#include <iostream> using namespace std; //判断点和圆的位置关系 //点类 class Point { public: //getset方法 void setX(int x){ m_X=x; } int getX(){ return m_X; } void setY(int y){ m_Y=y; } int getY(){ return m_Y; } private: int m_X; int m_Y; }; //圆类型 class Circle{ public: void setR(int r){ m_R=r; } int getR(){ return m_R; } //设置圆心 获取圆心 void SetCenter(Point center){ m_Center=center; } Point getCenter(){ return m_Center; } private: int m_R;//半径 // int m_X; //int m_Y; //上面x和y的坐标可以看成整体 Point m_Center; }; //判断点和圆的关系的函数 void idInCircle(Circle &c,Point &p){ //计算两点之间距离 平方 int Longs= (c.getCenter().getX()-p.getX())*(c.getCenter().getX()-p.getX())+ (c.getCenter().getY()-p.getY())*(c.getCenter().getY()-p.getY()); //计算半径的平方 int rLongs=c.getR()*c.getR(); //判断 if(Longs==rLongs){ cout<<"点在圆上"<<endl; } else if(Longs>rLongs){ cout<<"点在圆外"<<endl; } else{ cout<<"点在圆内"<<endl; } } int main() { //创建圆的对象 Circle c1; c1.setR(10); Point center; center.setX(10); center.setY(0); c1.SetCenter(center); //创建点的对象 Point p; p.setX(10); p.setY(10); idInCircle(c1,p); return 0; }
更多相关内容 -
Python实现两圆的位置关系,矩形的位置关系,矩形与点的位置关系
2018-03-22 10:24:44利用pycharm软件,基于Python语言实现两圆的位置关系,两矩形的位置关系,矩形与点的位置关系,以及直线、线段与点的位置关系 -
判断点与圆的位置关系
2020-07-02 20:37:47判断点与圆的位置关系 第一步,创建一个类,代表二维空间的一个点。二维空间确定一个点可参考平面直角坐标系中,确定了x坐标和y坐标,即可确定点的位置 package com.tyl.homework; import java.util.Scanner; /** ...判断点与圆的位置关系
第一步,创建一个类,代表二维空间的一个点。二维空间确定一个点可参考平面直角坐标系中,确定了x坐标和y坐标,即可确定点的位置
package com.tyl.homework; import java.util.Scanner; /** * 点类 */ public class Point { //x轴坐标值 double x; //y轴坐标值 double y; //Point类的无参构造器 public Point(){ } //Point类的有参构造器 public Point(double x,double y){ this.x = x; this.y = y; } //创建一个点的方法 public static Point createPoint(){ Scanner tools = new Scanner(System.in); System.out.println("请依次输入你想要创建的点的x坐标和y坐标:"); Point p = new Point(tools.nextDouble(),tools.nextDouble()); return p; } }
确定圆只需要知道圆的圆心位置和半径长度,圆心可直接定义为上面的Point类引用类型,半径即基本类型中的double类型。代码中的Circle类重写了其中的area(求面积)方法和perimeter(求周长),因为Circle类继承了抽象类Figure,这一步非必需,可选择不继承和重写。
/** *圆类 */ import java.util.Scanner; import static java.lang.StrictMath.PI; public class Circle extends Figure{ //圆心:p,自定义的Point类型 Point p; //半径:r double r; //Circle类的无参构造器 public Circle(){ } //Circle类的有参构造器 public Circle(double r){ this.r = r; } //计算面积的方法:S=圆周率*半径的平方 @Override public double area(){ //S=圆周率*半径的平方 return PI*r*r; } //计算圆的周长 c=2*半径*圆周率 @Override public double perimeter() { return 2*r*PI; } //创建一个圆 public static Circle createCircle() { Scanner tools = new Scanner(System.in); System.out.println("请输入圆的半径值:"); Circle c = new Circle(tools.nextDouble()); //设置圆的圆心坐标 System.out.println("请输入圆心的x坐标和y坐标:"); Point p1 = new Point(tools.nextDouble(),tools.nextDouble()); //把点p1赋值给圆c1的圆心p c.p = p1; return c; } //判断点与圆的位置关系 public void position(Point p1){ //点到圆心的距离公式(此处distance未开方,因此if中与r平方比较) double distance =(p1.x-p.x)*(p1.x-p.x)-(p1.y-p.y)*(p1.y-p.y); /* 点到圆心的距离等于半径,点在圆上 点到圆心的距离小于半径,点在圆内 点到圆心的距离大于半径,点在圆外 */ if (distance==r*r){ System.out.println("点在圆上"); }else if (distance<r*r){ System.out.println("点在圆内"); }else if (distance>r*r){ System.out.println("点在圆外"); } } }
测试代码
package com.tyl.homework; /** * 计算圆的面积,并判断点与圆的位置关系 */ public class Demo { public static void main(String[] args) { Circle c1 = Circle.createCircle(); //调用周长方法求圆的周长 System.out.println("所求圆的周长为:"+c1.perimeter()); //调用面积方法计算圆的面积 System.out.println( "所求圆的面积为:"+c1.area()); //调用createPoint方法创建一个点P2 Point p2 = Point.createPoint(); //调用position方法判断点与圆的位置关系 c1.position(p2); } }
运行结果:
D:\software\jdk-14.0.1\bin\java.exe "-javaagent:D:\software\JetBrains\IntelliJ IDEA 2020.1\lib\idea_rt.jar=51767:D:\software\JetBrains\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath D:\Code0625\out\production\Code0625 com.tyl.homework.Demo 请输入圆的半径值: 3 请输入圆心的x坐标和y坐标: 2 3 所求圆的周长为:18.84955592153876 所求圆的面积为:28.274333882308138 请依次输入你想要创建的点的x坐标和y坐标: 4 5 点在圆内 Process finished with exit code 0
-
平面上任意椭圆与点的位置关系
2019-05-07 16:09:46平面上任意椭圆与点的位置关系 标签(空格分隔): 未分类 问题描述 : 如上图所示,我们的目的是判断在二维空间中任意一椭圆与任意一点pi(xi,yi)p_i(x_i,y_i)pi(xi,yi)的位置关系,这样的位置关系有三种 : 1...平面上任意椭圆与点的位置关系
问题描述 : 如上图所示,我们的目的是判断在二维空间中任意一椭圆与任意一点 p i ( x i , y i ) p_i(x_i,y_i) pi(xi,yi)的位置关系,这样的位置关系有三种 : 1 点在椭圆上; 2 点在椭圆中; 3 点在椭圆外。
解决思路 :
从最简单的开始讲起, 在初中时候学到过,对于一个焦点在 x x x轴或 y y y轴的椭圆来讲有标准方程 :
x 2 a 2 + y 2 b 2 = 1 \frac{x^2}{a^2} + \frac{y^2}{b^2} = 1 a2x2+b2y2=1
或者
y 2 a 2 + x 2 b 2 = 1 \frac{y^2}{a^2} + \frac{x^2}{b^2} = 1 a2y2+b2x2=1
利用标准方程,判断点与椭圆的位置关系十分容易,以焦点在 x x x轴上的椭圆为例, ∀ p ( x i , y i ) ∈ R 2 \forall p(x_i,y_i)\in R^2 ∀p(xi,yi)∈R2,这里不加证明的给出位置关系的判别式 :
(1) 若
x i 2 a 2 + y i 2 b 2 < 1 \frac{x_i^2}{a^2} + \frac{y_i^2}{b^2} < 1 a2xi2+b2yi2<1
点在椭圆内;
(2) 若
x i 2 a 2 + y i 2 b 2 = 1 \frac{x_i^2}{a^2} + \frac{y_i^2}{b^2} = 1 a2xi2+b2yi2=1
点在椭圆上;
(3) 若
x i 2 a 2 + y i 2 b 2 > 1 \frac{x_i^2}{a^2} + \frac{y_i^2}{b^2} > 1 a2xi2+b2yi2>1
点在椭圆外。
这一块证明的资料很多,在此就不再赘述了。
现在将问题泛化 : 对于任意的一个椭圆如何求其与点 p i p_i pi的关系。根据上面的结论我们可以很自然的思考,如果通过一种坐标系的变换,将任意的椭圆都变为焦点在 x x x轴,或 y y y轴的椭圆,那么其与点 p i p_i pi位置关系的判断将是十分容易,只需要带入已知公式即可,根据这样的思路,我们建立如下坐标系。
如上图所示,在新的坐标系 x ′ 0 ′ y ′ x'0'y' x′0′y′中,椭圆的焦点处于坐标轴上,可以使用椭圆的标准方程进行求解,唯一的问题是如何将任给一点 p i p_i pi变换到 x ′ 0 ′ y ′ x'0'y' x′0′y′,证明的方式有很多种,在此选用基变换.
下述方法中,变换后向量的起点 0 ′ 0' 0′的坐标是 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)点,为了满足这个条件,首先对 p i p_i pi进行简单的平移变换,
x i = x i − x 0 y i = y i − y 0 x_i = x_i - x_0 \\ y_i = y_i - y_0 xi=xi−x0yi=yi−y0
注 : ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 是椭圆圆心坐标.求解 :
在原始坐标系 x 0 y x0y x0y中选取一组单位正交基 { e 1 ⃗ , e 2 ⃗ } , e 1 ⃗ = ( 1 , 0 ) , e 2 ⃗ = ( 0 , 1 ) \{ \vec{e_1},\vec{e_2} \},\vec{e_1} = (1,0),\vec{e_2} = (0,1) {e1,e2},e1=(1,0),e2=(0,1),显然 p i ⃗ = x i e 1 ⃗ + y i e 2 ⃗ \vec{p_i} = x_i \vec{e_1} + y_i \vec{e_2} pi=xie1+yie2.
如上图先将 e 1 ⃗ , e 2 ⃗ \vec{e_1},\vec{e_2} e1,e2旋转 θ \theta θ角,根据向量旋转公式:
( e 1 ′ ⃗ ) T = [ cos ( θ ) − sin ( θ ) sin ( θ ) cos ( θ ) ] ⋅ [ 1 0 ] ( e 2 ′ ⃗ ) T = [ cos ( θ ) − sin ( θ ) sin ( θ ) cos ( θ ) ] ⋅ [ 0 1 ] (\vec{e_1'})^T = \begin{bmatrix} \cos(\theta)& -\sin(\theta)\\ \sin(\theta) & \cos(\theta) \end{bmatrix} \cdot \begin{bmatrix} 1 \\ 0 \end{bmatrix} \\ (\vec{e_2'})^T = \begin{bmatrix} \cos(\theta)& -\sin(\theta)\\ \sin(\theta) & \cos(\theta) \end{bmatrix} \cdot \begin{bmatrix} 0 \\ 1 \end{bmatrix} (e1′)T=[cos(θ)sin(θ)−sin(θ)cos(θ)]⋅[10](e2′)T=[cos(θ)sin(θ)−sin(θ)cos(θ)]⋅[01]
综上 e 1 ′ ⃗ = ( cos θ , sin θ ) , e 2 ′ ⃗ = ( − s i n θ , c o s θ ) \vec{e_1'} = \left ( \cos \theta ,\sin\theta \right ),\vec{e_2'} = (-sin\theta,cos\theta) e1′=(cosθ,sinθ),e2′=(−sinθ,cosθ), 显然其满足这几点 :
(1) e 1 ′ ⃗ , e 2 ′ ⃗ \vec{e_1'},\vec{e_2'} e1′,e2′ 线性无关
(2) e 1 ′ ⃗ ⋅ e 2 ′ ⃗ = 0 \vec{e_1'}\cdot\vec{e_2'} = 0 e1′⋅e2′=0
(3) ∣ e 1 ′ ⃗ ∣ = ∣ e 2 ′ ⃗ ∣ = 1 \left | \vec{e_1'} \right | = \left | \vec{e_2'} \right | = 1 ∣∣∣e1′∣∣∣=∣∣∣e2′∣∣∣=1
以上通过旋转矩阵求出了新坐标系下的一组正交基,下面只需要求 p i ⃗ \vec{p_i} pi在新的基下的表示即可,解法有多种,下面展示一种通过求过度矩阵来进行求解的方法 :
将 e 1 ′ ⃗ , e 2 ′ ⃗ \vec{e_1'},\vec{e_2'} e1′,e2′通过 e 2 ⃗ , e 2 ⃗ \vec{e_2},\vec{e_2} e2,e2进行表示 :
e 1 ′ ⃗ = cos θ ⋅ e 1 ⃗ + sin θ ⋅ e 2 ⃗ e 2 ′ ⃗ = − sin θ ⋅ e 1 ⃗ + cos θ ⋅ e 2 ⃗ \vec{e_1'} = \cos\theta \cdot \vec{e_1} + \sin\theta \cdot \vec{e_2} \\ \vec{e_2'} = -\sin\theta \cdot \vec{e_1} + \cos\theta \cdot \vec{e_2} \\ e1′=cosθ⋅e1+sinθ⋅e2e2′=−sinθ⋅e1+cosθ⋅e2
由上可以求出过渡矩阵
C = [ cos ( θ ) − sin ( θ ) sin ( θ ) cos ( θ ) ] C = \begin{bmatrix} \cos(\theta)& -\sin(\theta)\\ \sin(\theta) & \cos(\theta) \end{bmatrix} C=[cos(θ)sin(θ)−sin(θ)cos(θ)]
所以 e 1 ⃗ , e 2 ⃗ \vec{e_1},\vec{e_2} e1,e2到 e 1 ′ ⃗ , e 2 ′ ⃗ \vec{e_1'},\vec{e_2'} e1′,e2′的坐标变换表示为 :
[ x i ′ y i ′ ] = C − 1 ⋅ [ x i y i ] \begin{bmatrix} x_i'\\ y_i' \end{bmatrix} = C^{-1}\cdot \begin{bmatrix} x_i \\ y_i \end{bmatrix} [xi′yi′]=C−1⋅[xiyi]
整理可以得到 :
x ′ = cos θ ⋅ x + sin θ ⋅ y y ′ = − sin θ ⋅ x + cos θ ⋅ y x' = \cos\theta \cdot x + \sin\theta \cdot y \\ y' = -\sin\theta \cdot x + \cos\theta \cdot y x′=cosθ⋅x+sinθ⋅yy′=−sinθ⋅x+cosθ⋅y
上述关系式还可以通过向量间的投影关系得到.最后将变换后的 ( x i ′ , y i ′ ) (x'_i,y'_i) (xi′,yi′)带入判别式,计算即可。
-
直线与圆位置关系知识点与经典例题.doc
2021-10-06 11:02:57直线与圆位置关系知识点与经典例题.doc -
直线与圆位置关系知识点经典例题.doc
2021-10-03 23:56:40直线与圆位置关系知识点经典例题.doc -
学冀教九级数学下册检测直线与圆的位置关系点与圆的位置关系PPT学习教案.pptx
2021-10-04 10:30:41学冀教九级数学下册检测直线与圆的位置关系点与圆的位置关系PPT学习教案.pptx -
九年级数学下册第28章圆28.2与圆有关的位置关系1点与圆的位置关系课件华东师大版20200327115
2021-09-09 00:29:54九年级数学下册第28章圆28.2与圆有关的位置关系1点与圆的位置关系课件华东师大版20200327115 -
九年级数学下册第28章圆28.2与圆有关的位置关系1点与圆的位置关系课件华东师大版20200325414
2021-09-09 00:24:29九年级数学下册第28章圆28.2与圆有关的位置关系1点与圆的位置关系课件华东师大版20200325414 -
数学九年级人教版点与圆的位置关系课件新人教版[2]PPT课件.pptx
2021-10-08 07:27:27数学九年级人教版点与圆的位置关系课件新人教版[2]PPT课件.pptx -
直线、圆的位置关系.doc
2021-05-19 10:01:45平面解析几何是高考的重点和热点内容,每年的高考试题中有选择题、填空题和解答题,考查的知识点有直线方程和圆的方程的建立、直线与圆的位置关系等,本节主要学习直线与圆的关系. 思路2.(复习导入) (1)直线方程Ax+By+C... -
九年级数学下册第28章圆28.2与圆有关的位置关系1点与圆的位置关系习题课件华东师大版20200326541
2021-09-09 00:24:39九年级数学下册第28章圆28.2与圆有关的位置关系1点与圆的位置关系习题课件华东师大版20200326541 -
点和圆位置关系经典讲义.ppt
2021-09-16 09:57:56点和圆位置关系经典讲义.ppt -
九年级数学下册第27章圆27.2与圆有关的位置关系1点与圆的位置关系同步练习新版华东师大版
2021-08-06 00:53:03九年级数学下册第27章圆27.2与圆有关的位置关系1点与圆的位置关系同步练习新版华东师大版 -
九年级数学下册第3章圆3.2点直线与圆的位置关系圆的切线3.2.1点直线与圆的位置关系课件湘教版20200323331
2021-09-09 00:49:23九年级数学下册第3章圆3.2点直线与圆的位置关系圆的切线3.2.1点直线与圆的位置关系课件湘教版20200323331 -
点与圆的位置关系第一课时 (2).ppt
2021-10-24 09:28:23点与圆的位置关系第一课时 (2).ppt -
2点与圆的位置关系——学生学习课件
2020-11-23 16:16:252点与圆的位置关系——学生学习课件 -
九年级数学下册第3章圆3.2点直线与圆的位置关系圆的切线3.2.1点直线与圆的位置关系教学课件湘教版...
2021-09-09 00:42:21九年级数学下册第3章圆3.2点直线与圆的位置关系圆的切线3.2.1点直线与圆的位置关系教学课件湘教版20200323343 -
九年级数学暑期自测练习题5 点与圆的位置关系
2021-08-19 17:52:01九年级数学暑期自测练习题5 点与圆的位置关系 -
高三数学点直线圆位置关系PPT课件.pptx
2021-10-10 05:39:25高三数学点直线圆位置关系PPT课件.pptx -
数学九年级人教点与圆的位置关系PPT学习教案.pptx
2021-10-05 07:13:01数学九年级人教点与圆的位置关系PPT学习教案.pptx -
部编4 第4讲 直线与圆、圆与圆的位置关系 新题培优练.doc
2021-09-09 12:04:27部编4 第4讲 直线与圆、圆与圆的位置关系 新题培优练.doc -
山东省滨州市无棣县埕口中学2013届中考数学分类汇编 点和圆的位置关系,直线与圆的位置关系,两圆的位置...
2021-08-19 17:59:04山东省滨州市无棣县埕口中学2013届中考数学分类汇编 点和圆的位置关系,直线与圆的位置关系,两圆的位置关系 -
九年级数学下册第二十九章直线与圆的位置关系29.1点与圆的位置关系学案无答案新版冀教版
2021-09-09 11:39:28九年级数学下册第二十九章直线与圆的位置关系29.1点与圆的位置关系学案无答案新版冀教版 -
九年级数学下册第二十九章直线与圆的位置关系29.1点与圆的位置关系同步练习无答案新版冀教版
2021-09-09 11:10:50九年级数学下册第二十九章直线与圆的位置关系29.1点与圆的位置关系同步练习无答案新版冀教版 -
数学九年级人教点与圆的位置关系新人教PPT课件.pptx
2021-10-08 07:27:25数学九年级人教点与圆的位置关系新人教PPT课件.pptx -
直线与圆的位置关系知识点及习题.doc
2021-09-28 18:20:47直线与圆的位置关系知识点及习题.doc -
九年级24.2点和圆,直线和圆的位置关系同步练习题及答案2套2精选.doc
2021-09-26 09:26:51九年级24.2点和圆,直线和圆的位置关系同步练习题及答案2套2精选.doc -
直线与圆的位置关系
2015-12-25 08:14:00直线与圆的位置关系直线与圆的位置关系直线与圆的位置关系直线与圆的位置关系直线与圆的位置关系直线与圆的位置关系直线与圆的位置关系直线与圆的位置关系