欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

判断点与圆的位置关系

程序员文章站 2023-11-17 08:32:46
判断点与圆的位置关系第一步,创建一个类,代表二维空间的一个点。二维空间确定一个点可参考平面直角坐标系中,确定了x坐标和y坐标,即可确定点的位置package com.tyl.homework;import java.util.Scanner;/** * 点类 */public class Point { //x轴坐标值 double x; //y轴坐标值 double y; //Point类的无参构造器 public Point(...

判断点与圆的位置关系

第一步,创建一个类,代表二维空间的一个点。二维空间确定一个点可参考平面直角坐标系中,确定了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

本文地址:https://blog.csdn.net/SakuraCerasus/article/details/107092681