Я пытаюсь построить модель Солнечной системы (только с Землей, Солнцем и Луной) при обработке (версия 3.4), используя режим Java.Я новичок в обработке, и я использовал только Java в этом контексте (следовательно, я также новичок в Java).
У меня есть кое-что, что частично работает:
Это мой код.Первая вкладка:
Planet sun;
void setup() {
size(900, 1200);
sun = new Planet(100, 10, 0);
sun.spawnMoons(1,2);
}
void draw() {
background(0);
translate(750, 900/2);
sun.show();
sun.orbit();
}
Вторая вкладка:
class Planet {
float radius;
float distance;
Planet[] planets;
float angle;
float orbitspeed;
Planet(float r, float d, float o) {
radius = r;
distance = 400;
angle = PI;
orbitspeed = o;
}
void orbit() {
angle = angle + orbitspeed;
if (planets != null) {
for (int i = 0; i < planets.length; i++) {
planets[i].orbit();
}
}
}
void spawnMoons(int total, int level) {
planets = new Planet[total];
for (int i = 0; i < planets.length; i++) {
float r = radius/(level*2);
float d = distance/(level*4);
float o = 0.01;
planets[i] = new Planet(r, d/(level*8), o);
if (level < 3) {
int num = 2;
planets[i].spawnMoons(num, level+1);
}
}
}
void show() {
pushMatrix();
fill(255, 100);
rotate(angle);
translate(distance, 0);
ellipse(0, 0, radius*2, radius*2);
if (planets != null) {
for (int i = 0; i < planets.length; i++) {
planets[i].show();
}
}
popMatrix();
}
}
Однако моя «Луна» слишком далеко от моей «Земли».Я пытаюсь это исправить, но не могу.Учитывая способ, которым я его построил, если я изменю значение на 11-й строке (вторая вкладка), это не решит проблему:
distance = 10;
Учитывая способ, которым я его построил, расстояние между Землей иСолнце у него такое же, как расстояние между Землей и ее Луной.
Мне удалось сделать радиус каждого объекта пропорциональным друг другу.Тем не менее, я не могу сделать то же самое с расстоянием между ними.Линия ниже должна была сохранить пропорциональность на расстоянии, но она не работает:
float d = distance/(level*4);
Как это исправить?
Спасибо.