We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hey guys, I´m Theresa, student of Visual Communication in Germany, so English is not my native language and I am new in processing but I will try my best, so here is my question. I try to simulate a moving solar system in processing with all physics components like gravitation, forces, velocity, acceleration, positions etc. the coordinates I got from the nasa website. I have two mainly problems. the first is the physic, I don't know, if the calculating methods are right and the second problem is that only one planet is visible but I defined two. Ah, and it must be ready till Monday :-P please, could anyone help me? Here is my code:
/////// SONNE zum 1.1. 2000
/////// X = -7.139143380212697E-03 Y = -2.792019770161695E-03 Z = 2.061838852554664E-04
/////// VX= 5.374260940168566E-06 VY=-7.410965396701423E-06 VZ=-2.522925180072137E-03
/////// MERKUR zum 1.1. 2000
/////// X =-1.478672233442572E-01 Y =-4.466929775364947E-01 Z =-2.313937582786785E-02
/////// VX= 2.117424563261189E-02 VY=-7.105386404267509E-03 VZ=-2.522925180072137E-03
/////// VENUS zum 1.1. 2000
/////// X =-7.257693602841776E-01 Y =-2.529582082587794E-02 Z = 4.137802526208009E-02
/////// VX= 5.189070188671265E-04 VY=-2.031355258779472E-02 VZ=-3.072687386494688E-04
/////// ERDE zum 1.1. 2000
/////// X =-1.756637922977122E-01 Y = 9.659912850526895E-01 Z = 2.020629118443605E-04
/////// VX=-1.722857156974862E-02 VY=-3.015071224668472E-03 VZ=-5.859931223618532E-08
/////// MARS zum 1.1. 2000
/////// X = 1.383221922520998E+00 Y =-2.380174081741852E-02 Z =-3.441183028447500E-02
/////// VX= 7.533013850513376E-04 VY= 1.517888771209419E-02 VZ= 2.996589710207392E-04
/////// https://rechneronline.de/planeten/masse.php
import peasy.*;
import peasy.org.apache.commons.math.*;
import peasy.org.apache.commons.math.geometry.*;
PVector pos;
PVector vel;
PVector acc;
float mas;
float deltaT;
float far;
Boid Erde = new Boid(
new PVector(-1.756637922977122E-01, 9.659912850526895E-01, 2.020629118443605E-04),
new PVector(-1.722857156974862E-02, -3.015071224668472E-03, -5.859931223618532E-08),
new PVector(0, 0, 0),
0.000002988,
0.999,
255);
Boid Venus = new Boid(
new PVector(-7.257693602841776E-01, -2.529582082587794E-02, 4.137802526208009E-02),
new PVector(5.189070188671265E-04, -2.031355258779472E-02, -3.072687386494688E-04),
new PVector(0, 0, 0),
0.000002448,
0.999,
155);
PeasyCam cam;
void setup() {
size(1600, 1200, P3D);
background(150);
frameRate(10);
cam = new PeasyCam(this, 10000);
}
void draw() {
lights();
translate(width / 2, height / 2);
scale(2000);
Erde.bewegDich();
Erde.zeichneDich();
Venus.bewegDich();
Venus.zeichneDich();
}
and than a second tab called "boid"
class Boid {
Boid(PVector position, PVector velocity, PVector acceleration, float masse, float deltaZeit, float farbe) {
pos = position;
vel = velocity;
acc = acceleration;
mas = masse;
deltaT = deltaZeit;
far = farbe;
}
void bewegDich() {
PVector posS = new PVector();
float masS = 1; // Sonne in Sonnenmassen
float G_SI = 6.674E-11; // m^3 kg^-1 s^-2
float sekundenTag;
float kiloSonnenmassen;
float meterAE;
float Grav;
float r = PVector.dist(posS, pos); //muss in AE umgerechnet werden
sekundenTag = (24 * 60 * 60);
kiloSonnenmassen = 1.98892E+30;
meterAE = (1 / (1.49597E+11));
Grav = (G_SI * (sekundenTag * sekundenTag) * kiloSonnenmassen * (meterAE * meterAE * meterAE)); // 0.017204072^2
PVector Anziehungskraft = (PVector.sub(posS, pos)).mult(Grav * mas * masS * (1 / (r * r * r))); // anziehungskraft der sonne
acc = PVector.div(Anziehungskraft, mas);
vel = PVector.add(vel, (acc.mult(deltaT)));
pos = PVector.add(pos, vel); // DIE GESCHWINDIGKEIT WIRD AUF DIE POSITION AUFADDIERT
acc = PVector.mult(acc, 0);
}
void zeichneDich() {
background(0);
println(pos);
pushMatrix(); // ändert die koordinaten innerhalb von push/pop matrix
translate(pos.x, pos.y, pos.z);
fill(far);
noStroke();
sphere(0.1);
popMatrix();
}
}
Answers
ah, and at the end, I would like to show two planets and draw a line between them to get a harmony like this:
du kannst dein post editieren
gehe dafür auf das Zahnrad und klicke edit
lasse eine leere zeile vor und nach dem ganzen code
markier den kompletten code und drück ctrl-o
tausend dank, sieht viel schicker aus - aber jetzt habe ich irgendwas dummes getan und die frage als beantwortet markiert -.- geht das rückgängig zu machen?
this
PVector pos; PVector vel; PVector acc; float mas; float deltaT; float far;
belongs probably into the class
so it is individually for each planet and not global variables
kann man wohl nicht rückgängig machen
für die linie: in draw einfach
line(erde.pos.x, erde.pos.y, venus.pos.x, ........ );
scale 2000 ? probier mal lieber 2
warum bei peasycam 10000 warum nicht 200?
bei fehlern am besten immer den kompletten aktuellen code posten
wo kommst du her?
ok ich habe die variablen in die class verlegt, sehe aber trotzdem nur einen Planeten
hast du scale und peasycam korrigiert?
vllt. ist der zweite Planet ausserhalb vom bildschirm?
ich hab scale auf 2000, weil ich sonst nichts sehen kann und aus ähnlichen gründen auch peasy cam auf 10000. mit fehlt da einfach das Verständnis für die Zusammenhänge und Maßstäbe... sind für mich einfach keine vorstellbaren Zahlen, mit denen ich da rechne. ich komm aus Thüringen
vllt. musst du mit der maus die kamera mal drehen um beide planeten zu finden
ich komm aus Berlin
ah, du darfst in zeichnedich kein background haben
kann noch keine erfolge berichten.. kannst du zwei Planeten sehen, wenn du es bei dir startest?
sphere 0.1 ist sehr klein, ich nutze immer 17 oder so, aber du scalest ja mit 2000 hoch
println würde ich später entfernen; ist zT instabil
ah, du darfst in zeichnedich kein background haben
dein Mathe ist aber besser als meins - wofür machst du das, physik leistungskurs?
naja ich rechne in astronomischen Einheiten... deswegen liegen die zahlen so weit auseinander
ne, ist ein Projekt für die uni. ich brauchs als Grundlage für gestalterische Arbeiten
und geht es jetzt?
jaaaaa!!! zwei Planeten! irre
tausend dank!!! ohne Mist, ich verzweifle gerade den vierten fucking Tag an diesem Problem und melde mich in diesem Forum an und ne viertel Stunde später ist dieses eine unter vielen Problem gelöst.
cool
mit der linie habe ich dir ja erklärt
wie heisst dein fach an der uni?
ich muss aufhören, bis bald mal!
ja das mit der Linie kommt erst zum Schluss, wenn alle Planeten drin sind. dann noch mit controlP5 ein paar Knöpfe um sie an und auszuschalten und ich bräuchte noch irgendwie die Möglichkeit dem Programm zu sagen, dass es zeichnen soll wie es nach x Jahren aussieht. Das werden jetzt die nächsten Schritte sein. Ich studiere Visuelle Kommunikation - also völlig fern jeglicher Naturwissenschaften. Vielleicht tue ich mich deswegen so schwer damit^^
nein, deine Physik ist doch super!!
ach da sind noch ein Haufen Fehler drin. Vielleicht findet sich da ja noch jemand, der mir diesbezüglich helfen kann.. Meinst du, ich muss dafür besser nochmal ne extra Frage erstellen? Eine, die sich mehr auf die Formeln bezieht, damit mal jemand kontrolliert?
ja, ist besser, und besser auf Englisch
Danke!!!
Yes, post complete updated code for people to test and post in English if possible, and the community can help you.
Also notice that if you search the forum (or search the forum using Google) for words like "solar" that you will find related past examples.
By the way: consider to use an array for your planets
Then you can for loop over them in draw
an array for your planets
before setup():
and then use:
etc.
closing this one,
continued here:
https://forum.processing.org/two/discussion/25048/need-help-from-physicists-with-my-calculation-methods-in-the-solar-system#latest