80 lines
2.7 KiB
Java
80 lines
2.7 KiB
Java
import codedraw.CodeDraw;
|
|
|
|
import java.awt.*;
|
|
|
|
// This class represents celestial bodies like stars, planets, asteroids, etc..
|
|
public class Body {
|
|
|
|
//TODO: change modifiers.
|
|
public double mass;
|
|
public Vector3 massCenter; // position of the mass center.
|
|
public Vector3 currentMovement;
|
|
|
|
//TODO: define constructor.
|
|
|
|
// Returns the distance between the mass centers of this body and the specified body 'b'.
|
|
public double distanceTo(Body b) {
|
|
|
|
//TODO: implement method.
|
|
return 0;
|
|
}
|
|
|
|
// Returns a vector representing the gravitational force exerted by 'b' on this body.
|
|
// The gravitational Force F is calculated by F = G*(m1*m2)/(r*r), with m1 and m2 being the
|
|
// masses of the objects interacting, r being the distance between the centers of the masses
|
|
// and G being the gravitational constant.
|
|
// Hint: see simulation loop in Simulation.java to find out how this is done.
|
|
public Vector3 gravitationalForce(Body b) {
|
|
|
|
//TODO: implement method.
|
|
return null;
|
|
}
|
|
|
|
// Moves this body to a new position, according to the specified force vector 'force' exerted
|
|
// on it, and updates the current movement accordingly.
|
|
// (Movement depends on the mass of this body, its current movement and the exerted force.)
|
|
// Hint: see simulation loop in Simulation.java to find out how this is done.
|
|
public void move(Vector3 force) {
|
|
|
|
//TODO: implement method.
|
|
}
|
|
|
|
// Returns the approximate radius of this body.
|
|
// (It is assumed that the radius r is related to the mass m of the body by r = m ^ 0.5,
|
|
// where m and r measured in solar units.)
|
|
public double radius() {
|
|
|
|
//TODO: implement method.
|
|
return 0d;
|
|
}
|
|
|
|
// Returns a new body that is formed by the collision of this body and 'b'. The impulse
|
|
// of the returned body is the sum of the impulses of 'this' and 'b'.
|
|
public Body merge(Body b) {
|
|
|
|
//TODO: implement method.
|
|
return null;
|
|
}
|
|
|
|
// Draws the body to the specified canvas as a filled circle.
|
|
// The radius of the circle corresponds to the radius of the body
|
|
// (use a conversion of the real scale to the scale of the canvas as
|
|
// in 'Simulation.java').
|
|
// Hint: call the method 'drawAsFilledCircle' implemented in 'Vector3'.
|
|
public void draw(CodeDraw cd) {
|
|
|
|
//TODO: implement method.
|
|
}
|
|
|
|
// Returns a string with the information about this body including
|
|
// mass, position (mass center) and current movement. Example:
|
|
// "5.972E24 kg, position: [1.48E11,0.0,0.0] m, movement: [0.0,29290.0,0.0] m/s."
|
|
public String toString() {
|
|
|
|
//TODO: implement method.
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|