从point对象获取值,该对象在Java中用作圆对象的中心
我已经安静地四处看了看,有很多都差不多,但是他们总是使用变量X1,X2和Y1,Y2,我不允许这样做。 对于一个作业,我有两个类,让我们称之为A和B从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
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一起工作!