# Vordefinierte Bewegungen



## Guest (17. Apr 2005)

hallo!

ich wollte wissen, wie man vordefinierte bewegungen erstellet. Z.B.: ein ball soll 100 pixel nach rechts fahren, dann 50 pixel nach oben, dann 30 pixel nach rechts und dann wieder 50 pixel nach unten. ich will es in einem applet machen.

danke im voraus!


----------



## Hansdampf (17. Apr 2005)

oben:1
rechts:2
unten:3;
links:4;
stehenbleiben:0;

100+50+30+50=230;
int[] richt=new int[230];
int index=0;
for(int i=0;i<100;i++){
richt[index]=rechts;
index++;
}
for(int i=0;i<50;i++){
richt[index]=oben;
index++;
}
for(int i=0;i<30;i++){
richt[index]=rechts;
index++;
}
for(int i=0;i<50;i++){
richt[index]=unten;
index++;
}

...
if(richt[jetzt%richt.length]==unten)...

geht auch schöner, willst du aber bestimmt nicht.


----------



## 0xdeadbeef (17. Apr 2005)

Gerade in diesem einfachen Fall erscheint mit der Ansatz mit dem Array unnötig aufwendig.

Allgemein würde man sowieso einen Ansatz mit Wegpunkten nehmen. Solange sie wie im einfachen Beispiel nur eine Korrdinaten ändert, kann man dann in jeder Bewegungsphase diese Koordinate um ein Delta erhöhen, bis der Wegpunkt erreicht ist, dann wechselt man zum nächsten Wegpunkt.

Im allgemeinen werden sich aber oft auch zwei Korrdinaten ändern, dann kann man einen Bresenham-Algorithmus verwenden - oder man rechnet sich halt ein deltaX und deltaY als double aus. 

Für komplexere Pfade, bei denen sich ein Objekt auf möglichst "runden" Bahnen durch Wegpunkte bewegt, könnte man mit Spline-Interpolation arbeiten.


----------



## Hansdampf (17. Apr 2005)

0xdeadbeef hat gesagt.:
			
		

> Gerade in diesem einfachen Fall erscheint mit der Ansatz mit dem Array unnötig aufwendig.


gerade in diesem einfachen Fall ist es genau richtig.
wie würdest du denn mit deinen einfachen Methoden z.B. ein "Stehenbleiben" machen? (brauchte er zwar nicht, aber wenn?)


----------



## 0xdeadbeef (18. Apr 2005)

Hansdampf hat gesagt.:
			
		

> (brauchte er zwar nicht, aber wenn?)


Hast Dir die Frage ja selbst beantwortet...


----------

