2016-03-11 114 views
1

好吧,所以我不知道你们中的任何一个人是否都喜欢帮助功课,但是我没有在家庭作业的最后部分做任何事情。这里是我的代码:Java-必须建模一个圈子

import java.awt.Graphics; 
import java.awt.Point; 

public class Circle { 
    private Point center; 
    private double radius; 

    public Circle() { 
     radius = 0; 
     center = new Point(0, 0); 
    } 

    public Circle(Point c, double r) { 
     radius = r; 
     center = c; 
    } 

    public Point getCenter() { 
     return center; 
    } 

    public double getRadius() { 
     return radius; 
    } 

    public void setCenter(Point newCenter) { 
     center = newCenter; 
    } 

    public void setRadius(double newRadius) { 
     radius = newRadius; 
    } 

    public void drawCircle(Graphics g) { 

    } 

    public boolean doTheyIntersect(Circle other) { 

    } 
} 

好吧,所以基本上我的老师会使用一个程序,使绘图面板上的圆圈。他会用这个来做到这一点,然后定义圈子应该在哪里。他在构造函数/字段上需要6个特定的方法。正如你所看到的,除了最后两种方法之外,我做了所有的事情,其中​​一个是void和一个布尔值。

第一个应该是从java.awt启用图形,第二个方法是检查它们是否相交。我从字面上认为,在每种方法中我还没有完成一行或两行代码。问题是,这不是我可以建立的答案,而是我必须尝试的答案,直到我找到正确的答案,并且我现在失去了知觉。所以任何指针都会很棒。无论如何,在“drawCircle”和“doTheyIntersect”方法中,我只需要知道什么会使他们工作。我实际上只需要在第一个图形中启用图形,然后测试这些圆形以查看它们是否在第二种方法中具有连接点。告诉我,我是一个骗子或moocher所有你想要的,但我失去了。

+0

相交点不应该太困难,你可以谷歌这一点。 'drawCircle()'方法可能需要一些非平凡的代码。 –

+0

如果您查看Graphics的javadoc,您将看到https://docs.oracle.com/javase/7/docs/api/java/awt/Graphics.html#fillOval(int,%20int,%20int,%20int )for drawOval –

+0

我会推荐勾画一些圈子,看看你是否可以确定交叉点的条件(与它们中心之间的距离有关)。 – andars

回答

1

从我的头顶:

public void drawCircle(Graphics g) { 
    g.drawOval(center.x+radius, center.y+radius, 2*radius, 2*radius); 
} 

public boolean doTheyIntersect(Circle other) { 
    return other.getRadius() + radius > distance(center, other.getCenter()); 
} 

的距离的方法也很简单。

+0

我认为你需要'2 * radius'作为宽度和高度。 – andars

+0

@andars:真的,谢谢。 – Burkhard