Refactor comments

This commit is contained in:
2022-03-28 10:31:17 +02:00
parent dca869995a
commit fcacaa8657
9 changed files with 152 additions and 88 deletions

View File

@ -1,6 +1,8 @@
import codedraw.CodeDraw;
// This class represents celestial bodies like stars, planets, asteroids, etc..
/**
* This class represents celestial bodies like stars, planets, asteroids, etc...
*/
public class Body {
private double mass;
private Vector3 massCenter; // position of the mass center.
@ -12,16 +14,20 @@ public class Body {
this.currentMovement = currentMovement;
}
// Returns the distance between the mass centers of this body and the specified body 'b'.
/**
* Returns the distance between the mass centers of this body and the specified body 'b'.
*/
public double distanceTo(Body b) {
return massCenter.distanceTo(b.massCenter);
}
// 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.
/**
* 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) {
Vector3 direction = b.massCenter.minus(massCenter);
double distance = direction.length();
@ -30,10 +36,12 @@ public class Body {
return direction.times(force);
}
// 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.
/**
* 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) {
// F = m*a -> a = F/m
Vector3 newPosition = massCenter.plus(force.times(1.0 / mass)).plus(currentMovement);
@ -46,19 +54,26 @@ public class Body {
currentMovement = newMovement;
}
// 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.)
/**
* 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() {
return SpaceDraw.massToRadius(mass);
}
/**
* Return the mass of the Body.
*/
public double mass() {
return mass;
}
// 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'.
/**
* 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) {
double mass = this.mass + b.mass;
return new Body(
@ -68,25 +83,27 @@ public class Body {
);
}
// 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'.
/**
* 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) {
cd.setColor(SpaceDraw.massToColor(mass));
massCenter.drawAsFilledCircle(cd, SpaceDraw.massToRadius(mass));
}
// 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."
/**
* 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() {
return String.format(
"%f kg, position: %s m, movement: %s m/s.",
mass, massCenter.toString(), currentMovement.toString()
);
}
}