我试图找到两点之间的距离

Im trying to find the distance between two points

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

这是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;
        }
        }

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

你想要的距离公式是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;
}

这是一个使用数学 class 的 hypot method 的 shorthand 版本。

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

正确应用“this”点和作为参数传入的“p”之间的距离公式。如果作为参数距离传入的点“p”小于圆半径,则 Next contains 为真。如果中心之间的距离小于每个圆的半径之和,则最后重叠为真。

该代码未经测试,但如果项目中的其他一切正常,它可能会正常工作。

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

public boolean contains(Point p){
    return this.center.distance(p) < this.radius;  
}

public boolean overlaps(Circle c){
    double d = this.center.distance(c.getCenter());
    return d < this.radius + c.getRadius();
}