精华内容
下载资源
问答
  • 判断点位置关系 第一步,创建一个类,代表二维空间的一个。二维空间确定一个可参考平面直角坐标系中,确定了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
    
    展开全文
  • //定义一个Point类,其属性包括的坐标,提供计算 ...//判断两个是否相交并输出结果 #include&lt;iostream&gt; using namespace std; class Point { public: void setPointt(int _x1,...
    //定义一个Point类,其属性包括点的坐标,提供计算
    //两点之间距离的方法
    //定义一个Circle类,其属性包括圆心和半径
    //创建两个圆形对象,提示用户输入圆心坐标和半径,
    //判断两个圆是否相交并输出结果
    #include<iostream>
    using namespace std;
    class Point
    {
    public:
    	void setPointt(int _x1, int _y1)
    	{
    		x1 = _x1;
    		y1 = _y1;
    	}
    	int getX1()
    	{
    		return x1;
    	}
    	int getY1()
    	{
    		return y1;
    	}
    
    private:
    	int x1;
    	int y1;
    };
    class Circle
    {
    public:
    	void setCircle(int _r, int _x0, int _y0)
    	{
    		r = _r;
    		x0 = _x0;
    		y0 = _y0;
    	}
    
    	//类做函数参数最好用引用
    	//在圆内返回1,不在圆内返回0
    	//在成员函数内可以使用c1的私有属性
    	int judge(Point &p)
    	{
    		int dd;
    		dd = (p.getX1() - x0)*(p.getX1() - x0) + (p.getY1() - y0)*(p.getY1() - y0);
    		if (dd < r*r)
    		{
    			return 1;
    		}
    		else
    		{
    			return 0;
    		}
    	}
    
    private:
    	int r;
    	int x0;
    	int y0;
    
    };
    
    
    
    int main02()
    {
    	Circle c1;
    	Point p1;
    	int tag;
    	c1.setCircle(2, 3, 3);
    	p1.setPointt(7, 7);
    	//点在圆内为1 不在圆内为0
    	tag=c1.judge(p1);
    	if (tag == 1)
    	{
    		cout << "在圆内" << endl;
    	}
    	else
    	{
    		cout << "在圆外" << endl;
    	}
    	system("pause");
    	return 0;
    }

    展开全文
  • 计算并判断点和圆位置关系。 无分区版 : #include <iostream> using namespace std; //设置 类 class Point { private: int p_x; int p_y; public: //设置横坐标 void setX(int x){ p_x = x; }...

    题目要求


    设计一个圆形类(Circle),和一个点类(Point),
    计算并判断点和圆的位置关系。



    无分区版 :

    #include <iostream>
    using namespace std;
    
    //设置 点 类
    class Point
    {
    private:
        int p_x;
        int p_y;
    
    public:
        //设置横坐标
        void setX(int x){
            p_x = x;
        }
        //设置纵坐标
        void setY(int y){
            p_y = y;
        }
        //输出横坐标
        int showX(){
            return p_x;
        }
        //输出纵坐标
        int showY(){
            return p_y;
        }
    };
    
    //设置 圆 类
    class Circle
    {
    private:
        //设置圆心
        Point center;
        //设置半径
        int c_R;
    
    public:
        //设置圆心
        void setCenter(Point c){
            center = c;
        }
        //设置半径
        void setR(int r){
            c_R = r;
        }
        //输出圆心(要用Point类型返回圆心)
        Point showCenter(){
            return center;
        }
        //输出半径
        int showR(){
            return c_R;
        }
    };
    
    //全局函数判断点和圆的关系
    void isInCircle(Circle &c , Point &p){
        //利用两点之间距离公式 与 圆的半径进行比较(可以两边都平方)
        int squareDistance = (c.showCenter().showX() - p.showX()) * (c.showCenter().showX() - p.showX()) +
                (c.showCenter().showY() - p.showY()) * (c.showCenter().showY() - p.showY());
    
        int radius = c.showR();
    
        if(squareDistance == radius * radius){
            cout<<"点在圆上"<<endl;
        }else if(squareDistance < radius * radius){
            cout<<"点在圆内"<<endl;
        } else if (squareDistance > radius * radius){
            cout<<"点在圆外"<<endl;
        }
    }
    
    int main(){
    
        //定圆心
        Point cc;
        cc.setX(10);
        cc.setY(0);
    
        //定圆心,半径
        Circle c;
        c.setR(10);
        c.setCenter(cc);
    
        //定平面内一点
        Point p;
        p.setX(10);
        p.setY(9);
    
        //判断 点 与 圆 的位置关系
        isInCircle(c,p);
    
    }
    


    分区版:

    • 分区区间 :
      在这里插入图片描述

    • point.h :

    #pragma once
    #include<iostream>
    using namespace std;
    
    //设置 点 类
    class Point
    {
    private:
        int p_x;
        int p_y;
    
    public:
        //设置横坐标
        void setX(int x);
        //设置纵坐标
        void setY(int y);
        //输出横坐标
        int showX();
        //输出纵坐标
        int showY();
    };
    

    • point.cpp :
    #include "point.h"
    
    
    //设置横坐标
    void Point::setX(int x) {
        p_x = x;
    }
    //设置纵坐标
    void Point::setY(int y) {
        p_y = y;
    }
    //输出横坐标
    int Point::showX() {
        return p_x;
    }
    //输出纵坐标
    int Point::showY() {
        return p_y;
    }
    

    • circle.h :
    #pragma once
    #include <iostream>
    #include "point.h"
    using namespace std;
    //设置 圆 类
    class Circle
    {
    private:
        //设置圆心
        Point center;
        //设置半径
        int c_R;
    
    public:
        //设置圆心
        void setCenter(Point c);
        //设置半径
        void setR(int r);
        //输出圆心(要用Point类型返回圆心)
        Point showCenter();
        //输出半径
        int showR();
    };
    

    • circle.cpp
    #include "circle.h"
    
    //设置圆心
    void Circle::setCenter(Point c) {
        center = c;
    }
    //设置半径
    void Circle::setR(int r) {
        c_R = r;
    }
    //输出圆心(要用Point类型返回圆心)
    Point Circle::showCenter() {
        return center;
    }
    //输出半径
    int Circle::showR() {
        return c_R;
    }
    

    • 主函数.cpp
    #include "point.h"
    #include "circle.h"
    
    //全局函数判断点和圆的关系
    void isInCircle(Circle& c, Point& p) {
        //利用两点之间距离公式 与 圆的半径进行比较(可以两边都平方)
        int squareDistance = (c.showCenter().showX() - p.showX()) * (c.showCenter().showX() - p.showX()) +
            (c.showCenter().showY() - p.showY()) * (c.showCenter().showY() - p.showY());
    
        int radius = c.showR();
    
        if (squareDistance == radius * radius) {
            cout << "点在圆上" << endl;
        }
        else if (squareDistance < radius * radius) {
            cout << "点在圆内" << endl;
        }
        else if (squareDistance > radius * radius) {
            cout << "点在圆外" << endl;
        }
    }
    
    int main() {
    
        //定圆心
        Point cc;
        cc.setX(10);
        cc.setY(0);
    
        //定圆心,半径
        Circle c;
        c.setR(10);
        c.setCenter(cc);
    
        //定平面内一点
        Point p;
        p.setX(10);
        p.setY(10);
    
        //判断 点 与 圆 的位置关系
        isInCircle(c, p);
    
    }
    


    参考资料 :

    https://www.bilibili.com/video/BV1et411b73Z

    展开全文
  • 我知道有四种关系,相交,包含(两种),相离。 圆包含矩形的情况可以 检测圆的四个坐标轴方向的坐标是否在矩形内或在矩形上 矩形包含圆的情况可以 检测矩形的四...但是矩形和圆相交相离就不知道怎么判断了。。。。
  • C++判断点和平面的位置关系

    千次阅读 2019-07-10 21:40:07
    与平面的位置关系 ...判断点和某平面的位置关系可以依照上面三个判断式,如下: 判断位置关系 Ax+By+Cz+D=0 (x,y,z)在平面上 Ax+By+Cz+D>0 (x,y,z)在正半空间 Ax+B...

    点与平面的位置关系
    如果令法向量N为(A,B,C),点P0为。则平面的方程为:
    Ax+By+Cz+D=0
    对于点P0,代入后满足
    NP0 + D = 0
    所以D = -N
    P0;

    判断某点和某平面的位置关系可以依照上面三个判断式,如下:

    判断式 位置关系
    Ax+By+Cz+D=0 点(x,y,z)在平面上
    Ax+By+Cz+D>0 点(x,y,z)在正半空间
    Ax+By+Cz+D<0 点(x,y,z)在负半空间

    下面是无关代码:(没有正式的规整,自看)

      Point normal(all_point[temp.mindiatance_point][0] - temp.projected_point[0],
                             (all_point[temp.mindiatance_point][1] - temp.projected_point[1]),
                             (all_point[temp.mindiatance_point][2] - temp.projected_point[2]));
                for(int myindex = 0;myindex < 3 ; myindex++){
                    Point inside(all_point[temp.mindiatance_op_point[myindex%3]][0] - all_point[temp.mindiatance_op_point[(myindex+1)%3]][0],
                                 all_point[temp.mindiatance_op_point[myindex%3]][1] - all_point[temp.mindiatance_op_point[(myindex+1)%3]][1],
                                 all_point[temp.mindiatance_op_point[myindex%3]][2] - all_point[temp.mindiatance_op_point[(myindex+1)%3]][2]);
    //                cout << "old normal"<<normal << endl;
    //                cout << "inside" << inside << endl;
                    Point new_normal  = ThreeCross(inside,normal); // get a plane
    //                cout << "new_normal" << new_normal <<"--" << endl;
                    double  D = - ThreeDot(new_normal,all_point[temp.mindiatance_op_point[myindex%3]]);
    //                cout << "D" << D << endl;
                    double check_mindiatance_point = ThreeDot(all_point[temp.mindiatance_point],new_normal) +D;
                    double check_mindiatance_op_point = ThreeDot(all_point[temp.mindiatance_op_point[(myindex+2)%3]],new_normal) +D;
    //                cout << check_mindiatance_point << "---- "<<check_mindiatance_op_point<< endl;
    
    展开全文
  • 判断点与向量位置关系

    千次阅读 2018-06-27 14:37:28
    工作中需要判断点与矢量的位置关系,即在矢量左侧或者右侧,找了看了一下理论,其实就是简单的高中知识,只不过都忘差不多了,不过不难,直接上代码(JAVA)。package cn.xue.Algorithm; public class ...
  • 判断位置关系

    千次阅读 2015-09-12 13:45:17
    题目要求:(1)定义一个Point类,其属性包括的坐标,提供计算... (3)创建两个圆形对象,提示用户输入圆心坐标半径,判断两个是否相交,并输出结果。 类的声明: MyPoint.h #pragma once class MyPoint {
  •  cout 请输入第一个的半径、x1y1 " ;  cin >> r1 >> x1 >> y1;  c1.setCircle(r1, x1, y1);  cout 请输入第二个的半径、x2y2 " ;  cin >> r2 >> x2 >> y2;  c2.setCircle(r2, x2, y2);  ...
  • 判断点与多边形位置关系算法

    千次阅读 2012-03-15 23:30:01
    判断点与多边形位置关系算法  ---by wangsh    目前,判断点与多边形位置关系算法多是采用射线法,判断射线与多边形交点的个数的奇偶性。在处理简单多边形方面,算法性能良好,但是对处理复杂多边形等不是很...
  • 【C刷题记录】圆位置关系

    千次阅读 2020-03-12 16:54:59
    判断二维空间中的,是否在内(输出:该内、该上、该外)。 允许的误差为1e-6. **输入格式要求:"%f,%f" “%f” “%f,%f” 提示信息:“请输入的圆心坐标:” “请输入的半径:” “请输入...
  • 判断一个点和三角形的位置关系

    千次阅读 2018-12-14 12:26:51
     已知三角形ABC的坐标,以及P的坐标,判断P与三角形的位置关系。  ①:P在三角形内,那么 S
  • x3,y3 三个坐标构成一个三角形,随机输入一个坐标判断是否再三角形范围内。” 拿到这个题目,  首先想到的要如何从键盘输入三个参数,目前为止我对pyton键盘输入函数的了解仅限于raw_input() 函数,但是
  • 直线与位置关系怎么判断

    千次阅读 2017-06-21 16:37:00
    《直线与位置关系》这个知识应用比较广泛,是几何知识的一个综合运用,在今后的解题及几何证明中,将起到重要的作用,所以就必须熟练掌握它们之间有哪些位置关系。为了更好地理解,我们可以借助数学绘图工具来...
  • 判断点与多边形位置关系的算法

    千次阅读 2008-12-23 14:37:00
    //判断点与多边形的位置关系 //若在多变形内部,返回-1;若在多变形边界上,返回 0;若在多变形外部,返回 1; //该算法不仅射线算法有相同的效率,而且对射线算法中特殊情况的处理近乎完美,也很好的避开...
  • python射线法判断点与多边形的位置关系

    千次阅读 多人点赞 2020-05-18 15:26:44
    python射线法判断点与多边形的位置关系 博客为本人的学习笔记,多多学习,一起交流。 常见的判断点与多边形的位置关系有面积法,角度法以及射线法 以射线法的实现为例,代码如下: #write by heheyang def in_or_out...
  • 定义一个表示圆的类Circle,包含x,y,r三个私有变量,分别为圆心x坐标,圆心y坐标和圆半径。声明Circle类的两个友元函数distance和relation,分别计算两圆圆心位置和判断两圆位置关系
  • 知识: 1.到直线的距离公式 d = Ax +By +C = 0 根号 A^2+B ^2 ...3.两圆关系: 圆心距 大于 半径 = 相离 圆心距 等于 半径 = 相切 圆心距 小于 半径 = 相交 圆心距 + 小半径 小于大半径 = 包含关...
  • C++ 实现位置关系

    千次阅读 2018-03-21 18:46:10
    C++ 实现位置关系 //maincircle #include&lt;iostream&gt; #include"circle.h" #include"point.h" using namespace std; int main() { circle c1; point p1; c1.getcircle...
  • 平面上任意椭圆与位置关系

    千次阅读 2019-05-07 16:09:46
    问题描述 : 如上图所示,我们的目的是判断在二维空间中任意一椭圆与任意一点pi(xi,yi)p_i(x_i,y_i)pi​(xi​,yi​)的位置关系,这样的位置关系有三种 : 1 在椭圆上; 2 在椭圆中; 3 在椭圆外。 解决思路 : 从最...
  • opencv 判断点相对于轮廓的位置关系

    千次阅读 2017-03-16 16:25:43
    网上说的好多都错了,opencv里的pointPolygonTest()函数确实可以判断点相对于轮廓的位置关系, 但关于参数measureDist的作用却说错了,官方文档解释如下:   Performs a point-in-contour test. The function ...
  • 需求1:定义一“”(Circle)类,圆心为“”Point类,构造一,求的周长面积,并判断关系 分析: Circle: 特征:圆心,半径 行为:的周长面积 Point: 特性:x y 实现1:首先创建...
  • 理想很丰满,现实很骨感,常常以为实现一个算法不是很难,但在现实中场景更加复杂,...下面介绍一个OpenCV的小接口,用来判断点和contour的位置关系 def pointPolygonTest(contour, pt, measureDist): # real sign...
  • 判断两个线段的相对位置关系

    千次阅读 2018-08-23 09:16:09
    抛出3个问题,先自己理解理解,我们用叉积的办法来判断这两条线段的位置关系 就是向量p0p1与p0p2的叉积如果 &gt;0则向量p0p1在向量p0p2的顺时针方向 &lt;0则向量p0p1在向量p0p2的逆时针方向 =0的话...
  • 利用叉积判断点和线的关系

    千次阅读 2016-01-10 15:13:09
    用叉积判断点在线的左侧还是右侧: 记住那句话,逆正顺负(因为参数的设置不同而不同) 9 3 -2 4 -------------------------------- Process exited with return value 0 Press any key to continue...
  • 有关的位置关系

    千次阅读 2014-03-12 18:40:45
    1、点和圆位置关系  如果圆的半径为r,已知到圆心的距离为d,则可用数量关系表示位置关系.  (1)d>r在圆外;  (2)d=r在圆上;  (3)d在圆内. 2、确定圆的条件  不在同一直线上的三个确定一...
  • 用叉积来判断两个向量的位置关系显然,如果向量A×B的值为正数,那么对于坐标原点来说,A在B的顺时针方向,A×B的值为...所以给出两个向量的起始坐标他们分别的末坐标,可以直接用叉乘判断位置关系,如果顺时针就输出
  • 判断两条直线的位置关系

    千次阅读 2019-03-07 09:53:31
    求两条直线的位置关系中, 大神是用的向量的想法,思路很新颖,但是我有点一知半解,c++转的python代码运行也有点问题, 于是我老老实实的在网上补习了一下直线的位置关系, 并用一般表达式做了实现。 其中线段的...
  • Java作业-判断圆关系

    千次阅读 2017-09-23 19:45:40
    3、在主函数中调用无参的构造函数生成的实例c1,调用有参的构造函数生成的实例c2,调用实例方法判断c1c2是否相重叠。 @author Vivinia */ package two; import java.util.Scanner; public class ...
  • 铅垂线内法实现判断一个与多边形区域之间的位置关系。 铅垂线内法的基本思想是从待判别向外引铅垂线,计算其与多边形交点的个数。若交点个数为奇数,则在多边形内;若交点个数为偶数,则该在多边形外...
  • Problem D: 判断两个之间的关系

    千次阅读 2018-05-25 17:03:55
    Problem D: 判断两个之间的关系Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1613 Solved: 1346[Submit][Status][Web Board]Description定义Point类,包括double类型的两个属性,分别表示二维空间中一个的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 467,907
精华内容 187,162
关键字:

判断点和圆的位置关系