从point对象获取值,该对象在Java中用作圆对象的中心

从point对象获取值,该对象在Java中用作圆对象的中心,java,Java,我已经安静地四处看了看,有很多都差不多,但是他们总是使用变量X1,X2和Y1,Y2,我不允许这样做。 对于一个作业,我有两个类,让我们称之为A和B Class A //Punt (x,y) Punt mp1 = new Punt(1.0, 2.0) Punt mp2 = new Punt(3.0, 4.0) //Circle(center, radius) Circle c1 = new Circle(mp1, 1.0) Circle c

我已经安静地四处看了看,有很多都差不多,但是他们总是使用变量X1,X2和Y1,Y2,我不允许这样做。 对于一个作业,我有两个类,让我们称之为A和B

    Class A
    //Punt (x,y)
    Punt mp1 = new Punt(1.0, 2.0)
    Punt mp2 = new Punt(3.0, 4.0)

    //Circle(center, radius)
    Circle c1 = new Circle(mp1, 1.0)
    Circle c2 = new Circle(mp1, 1.0)
现在在B类中,我需要看看圆是否重叠,所以我想看看中心点的距离是否小于半径1+半径2。我得把它圈起来

    Class B
    private Punt center
    private double radius
    public Circle(Punt mp, double ra)
        center = mp
        radius = ra

    public boolean overlap(Circle that)
        //here I would need to find the distance between the distance of the centers with Pythagorean theorem
        double sumRadius = this.radius + that.radius  //this one works
    if (distCenter <= sumRadius )
        return true
   else
        return false;
我试了很多我想不到的东西,但都没用,有什么建议吗


我不允许只做X1和X2,在类A中创建getx1等等。

你的圆类肯定有getRadius和getCenter方法,对吗?得到中心值,计算欧氏距离,然后与半径之和比较。实际上,您甚至不需要getCenter方法,因为您可以直接访问中心点、两个圆的Punt字段、这个圆和那个圆。请注意,欧几里德距离是您发现的公式-

Math.sqrt(deltaX * deltaX + deltaY * deltaY)
式中,deltaX是两个圆心点X值之差,deltaY也是如此


你需要给我们看看你的平底船。我必须假设你可以从中得到x和y值,这就是你问题的解决方案。i、 e.center.getX和center.getY对于初学者,您不能访问圆对象中的变量,因为这些变量是公共的。您可以创建getter或设置正确的getter

然后你可能可以做这样的事情:

public boolean overlap(Circle other) {
   Punt otherCenter = other.getPunt();
   double distance = Math.sqrt(Math.pow(Math.abs(otherCenter.x - center.x), 2) + 
       Math.pow(Math.abs(otherCenter.y - center.y), 2));

   return distance < ( radius + other.getRadius() );
}

我不能保证这会奏效,但我认为这至少会为你指明正确的方向。

编辑你的帖子,让它更清晰。。。并且使用Java syntaxI,因为我甚至不允许使用getRadius和getCenter方法。我所知道的欧几里得距离,因为我不是英国本土人,所以我作为毕达哥拉斯学会了这一点。关于deltaX和deltaY,这就是重点,我似乎不能得到那些X和Y值,我不能用这个减去Punt对象。佐特:你没有向我们展示Punt类的代码,但它肯定有提取x和y值的方法。当然!我为一项不同的作业上了一堂平底船课。我想我可以用这个。我去试试看它是否管用。我只做了三个星期的编码,请原谅我的无知编辑它与确实在Puntclass中的this.center.getX一起工作!