2016-03-11 58 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