判断点与圆的位置关系
程序员文章站
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