hi
wir haben in informatik die aufgabe bekommen, ein kleines planetensystem (2d) mit canvas zu zeichnen, zuerst mal eine sonne und einen planeten
soweit so gut, ist noch kein problem
doch der planet soll sich auch bewegen, das heisst in form-farbe übermalen und dann irgendwo daneben neu zeichnen, wär auch kein problem, wenn er dabei keine kreisbahn beschreiben sollte
frage: wie bekomme ich die koordinaten raus, mit denen der planet neu gezeichnet werden soll? hab mal nen freund gefragt, der meinte :
Zitat: |
merkur.y = sonne.y - wurzel aus [merkur.abstand²-(sonne.x-merkur.x)²]
musst halt vorher etwas schreiben, wie: inc(merkur.x,v) |
das hab ich dann mit nem timer so umgesetzt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Timer1Timer(Sender: TObject);
begin planet.hide; inc(planet.x,planet.v); planet.y:=round(sonne.y-(SQRT((planet.abstand*planet.abstand)-(sonne.x-planet.x)*(sonne.x-planet.x)))); planet.show;
end; |
die ausgangsposition des planeten ist (sonne.x | sonne.y-planet.abstand), also senkrecht über der sonne, da der punkt (sonne.x | sonne.y) der mittelpunkt der sonne ist
das dumme ist nur, dass das nur für etwas mehr als ein viertel der bahn funktioniert(dreht sich im uhrzeigersinn um die sonne) und der planet dabei noch schneller wird
gruss & schonmal danke
MoD17