判断点与圆的位置关系

判断点与圆的位置关系

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

你可能感兴趣的:(判断点与圆的位置关系)