首页 > 解决方案 > 我试图找到两点之间的距离

问题描述

我已经做了几天了,我似乎无法弄清楚如何找到两点之间的距离以及如何制作包含和重叠

这是UML图 在此处输入图像描述

除了包含和重叠之外,我已经完成了所有的 setter 和 getter 对象

这是具有预期输出的测试参数 https://i.stack.imgur.com/HJMYG.png

这是我所做的代码

public class Question03 {
 
        public static void main(String[] args) {
            Circle c1 = new Circle(new Point(0, 0), 1.0);
            
            System.out.println(c1.getArea());
            
            Circle c2 = new Circle(new Point(1, 0), 1.0);
            
            System.out.println(c2.getArea());
            System.out.println(c1.getCenter().distance(c2.getCenter()));
            System.out.println(c1.contains(new Point(0, 0.5)));
            System.out.println(c1.overlaps(c2));
            
            Circle c3 = new Circle(new Point(0, 4), 1.0);
            
            System.out.println(c3.contains(new Point(0, 0)));
            System.out.println(c3.overlaps(c1));
        
    public class Circle {
            Point center;
            double radius;
        Circle (Point center, double radius){
        this.center=center;
        this.radius=radius;
        }
        public Point getCenter() {
            return this.center;
        }
        public double getRadius(){ 
            return this.radius; 
        }
        public Point setCenter(){
            return this.center;
        }
        public double setRadius(){
            return this.radius;
        }
        public double getArea(){
        double area = Math.PI * radius * radius;
                return area;
            
        }
        public double getPerimeter(){
        double perimeter = Math.PI * (radius * 2);    
                return perimeter;
            
        }
        public boolean contains(Point p){
         return contains;   
        }
        public boolean overlaps(Circle c){
            return overlaps;
        }        
        }
        
        public class Point {
         double x;
         double y;
         Point(double x, double y){   
         this.x=x;
         this.y=y;       
        }
            public double getX(){
            return this.x;
        }
            public double getY(){
            return this.y;
            
            }      
            public double setX(){
            return this.x;
            }
        public double setY(){
            return this.y;
            }  
        public double distance(Point p){
        double distance = Math.sqrt((-x)*(-x) + (-y)*(-y));   
            return distance;
        }
        }

我不知道在此之后该怎么做,我真的被卡住了,我在互联网上找不到任何关于此的内容,请帮助:(

标签: javaconstructorgettersetter

解决方案


你想要的距离公式是d=√((x_2-x_1)²+(y_2-y_1)²)。尝试这个:

public double distance(Point p) {
  double xDiff = p.getX() - this.x;
  double yDiff = p.getY() - this.y;
  double xPow = xDiff * xDiff;
  double yPow = yDiff * yDiff;
  double distance = Math.sqrt(xPow + yPow);
  return distance;
}

这是使用 Math 类的hypot 方法的速记版本。

public double distance(Point p) {
  return Math.hypot(p.getX() - this.x, p.getY() - this.y);
}

推荐阅读