1
裏面的人等級:在Java中繪製頭部和頸部。問題與DrawLine的
public Point[] endPointArray;
private int scalar;
private Head head;
private Neck neck;
public Person(){
scalar = 1;
endPointArray = new Point[100];
for (int i = 0 ; i < 100 ; i++){
endPointArray[i] = new Point();
}
positionArray = new int[4];
point = new Point(0,0);
endPointArray[0].x = 5;
endPointArray[0].y = 5;
head = new Head(neck, endPointArray, scalar);
neck = new Neck(body, endPointArray, scalar);
}
public void draw(Graphics g){
head.draw(g);
neck.draw(g);
}
裏面的頭班:
// ---------- CONSTANTS. ----------
private static int Base_Radius = 20;
// ---------- VARIABLE DECLARATIONS. ----------
private int radius;
private int scale; // Scale determines how large the Head will be.
private Point startingPoint; //Starting Point for the Person and the Head.
private Point endingPoint; //Ending Point, where the Neck will start from.
private Point[] endPointArray; // Contains startingPoint in position [0] by this point from Person.
private Point centre;
private Neck neck;
// ----------------------------------------
// HEAD CREATION.
// ----------------------------------------
public Head(Neck neck, Point[] endPointArray, int scale){
this.neck = neck;
this.endPointArray = endPointArray;
this.scale = scale;
radius = Base_Radius * scale;
startingPoint = new Point();
endingPoint = new Point();
centre = new Point();
// Copies the value of endPointArray[0] into startingPoint.
startingPoint.x = endPointArray[0].x;
startingPoint.y = endPointArray[0].y;
// Picks the point on the Head where the Neck will start from.
endingPoint.x = startingPoint.x + radius;
endingPoint.y = startingPoint.y + (2*radius);
// Assigns the value of the circles centre to the centre point.
centre.x = startingPoint.x + radius;
centre.y = startingPoint.y + radius;
// Puts the value of the endingPoint into the endPointArray[1].
endPointArray[1].x = endingPoint.x;
endPointArray[1].y = endingPoint.y;
}
// ----------------------------------------
// DRAW THE HEAD.
// ----------------------------------------
public void draw(Graphics g){
g.drawOval(startingPoint.x, startingPoint.y, radius, radius);
System.out.println("Radius : " + radius);
System.out.println("Head Starting Point : ("+startingPoint.x+","+startingPoint.y+").");
System.out.println("Head Ending Point : ("+endingPoint.x+","+endingPoint.y+").\n");
}
裏面的頸部類:
// ---------- CONSTANTS. ----------
private static int Base_Length = 10;
// ---------- VARIABLE DECLARATIONS. ----------
private int length;
private int scale; // Scale determines how large the Head will be.
private Point anglePoint;
private Point startingPoint; //Starting Point for the Person and the Head.
private Point endingPoint; //Ending Point, where the Neck will start from.
private Point[] endPointArray; // Contains startingPoint in position [0] by this point from Person.
private Body body;
// ----------------------------------------
// NECK CREATION.
// ----------------------------------------
public Neck(Body body, Point[] endPointArray, int scale){
this.endPointArray = endPointArray;
this.body = body;
this.scale = scale;
length = Base_Length * scale;
startingPoint = new Point();
endingPoint = new Point();
anglePoint = new Point();
// Making the startingPoint equal to the endPointArray[1].
startingPoint.x = endPointArray[1].x;
startingPoint.y = endPointArray[1].y;
// Seting the values of the point where the neck finishes.
endingPoint.x = startingPoint.x;
endingPoint.y = startingPoint.y + length;
}
// ----------------------------------------
// DRAW THE HEAD.
// ----------------------------------------
public void draw(Graphics g){
g.drawLine(startingPoint.x, startingPoint.y, endingPoint.x, endingPoint.y);
System.out.println("Neck Starting Point : ("+startingPoint.x+","+startingPoint.y+").");
System.out.println("Neck Ending Point : ("+endingPoint.x+","+endingPoint.y+").");
}
輸出:
半徑:20
頭起點:(5,5)。
頭頂終點:(25,45)。
頸部起點:(25,45)。
頸部終點:(25,55)。
頭在小組中繪製在5,5,似乎有正確的半徑。頸部離開頭部遠離頭部。輸出看起來看起來不錯,但從視覺上看它是不正確的。脖子應該是從頭部底部向下的水平線,我不知道爲什麼它不按我期望的方式行事。 對不起,如果這是一個新手問題,但我現在很困難。
謝謝你的,有時候你就不能制定出這樣的小錯誤。 – user1522263 2012-07-13 00:31:52