Flugzeug mit konstruktionsproblem

Posted By: hopfel

Flugzeug mit konstruktionsproblem - 01/14/09 16:08

Ich habe einen Flugsimulator gebaut. Mit Flugzeug, umgebung etc. nun hat sich aber ein problem aufgetan. Wenn ich während dem Spiel den roll-Winkel ändere, und dann den tilt-Winkel (für eine Kurve), fliegt mein Flugzeug nach oben, statt dass es sich dem roll-winkel anpasst und eine Steilkurve fliegt.
Mein Code:

flieger = me;
var kmh=3;
var mh=0;
while(1)
{
vec_set(camera.x,vector(-100,0,10));
vec_rotate(camera.x,my.pan);
vec_add(camera.x,my.x);
vec_set(camera.pan,nullvector);
ang_add(camera.pan,my.pan);


if(key_q&&kmh<35)
kmh+=0.5*time_step;
if(key_a&&kmh>3)
kmh-=0.5*time_step;
if(key_cuu)
my.tilt-=1*time_step;
if(key_cud)
my.tilt+=1*time_step;
if(key_cur)
mh=6;
if(key_cul)
mh=-6;
if(!key_cul&&!key_cur)
mh=0;

c_move(my,vector(kmh*time_step,0,0),nullvector,IGNORE_MODELS+GLIDE);
c_rotate(my,vector(0,0,mh*time_step),nullvector,IGNORE_MODELS+GLIDE);

wait(1);
}
Posted By: Schmerzmittel

Re: Flugzeug mit konstruktionsproblem - 01/15/09 08:56

Hm...das selbe Problem hatte ich auch.

Wenn mein Fliegerle sich auf eine Seite rollte, dann waren die Achsen vertauscht.

Stell dir das mal Bildlich vor. Wenn du ein Kreuz (in diesem Fall die Achsen) in die Mitte deines Fliegers setzen würdest und den Flieger dann drehst, drehen sich die Achsen auch mit. Dann fliegt er aber auch nach oben oder unten, weil die Achsen immer noch in diese Richtung schauen(also schräg in die Richtung schauen).

Anders kann ich es leider grad nicht erklären.
Probier mal einzeln, welche Achsen stimmen; also rauf, runter, links, rechts und in kombination miteinander.

Ich gucke heute mal nach meinem alten Script, vielleicht hilft dir das.

Grüße
Schmerzmittel
Posted By: hopfel

Re: Flugzeug mit konstruktionsproblem - 01/15/09 11:07

also stimmen tut der Tilt und pan winkel. nur roll nicht.
Posted By: Widi

Re: Flugzeug mit konstruktionsproblem - 01/15/09 11:37

Das währe mit vec_rotateaxis lösbar, dreht eine Entity um eine achse, die schräg im Raum steht. Allerdings experimentiere ich zurzeit auch mit dem Befehl, bringe es aber nicht zum laufen. Siehe mein Topic:

Mein Topic

Vielleicht kannst du auch mit ang_add oder ang_rotate was anfangen...
Posted By: hopfel

Re: Flugzeug mit konstruktionsproblem - 01/15/09 20:43

Meine Engine kennt vec_rotateaxis nicht einmal, auch in der Hilfe kennt es den Ausdruck nicht.
Posted By: hopfel

Re: Flugzeug mit konstruktionsproblem - 01/16/09 16:00

Habe das Problem jetzt auf die primitive Art und weise gelöst:

var kmh=3;
var mh=0;
var parti=0;
var tiltroll=0;
var panroll=0;
var rollhi=180;
var rollhi2=-90;
var rollhi3=90;

if(my.roll>180)
my.roll=-180;
if(my.roll<-180)
my.roll=180;
if(rollhi>180)
rollhi=-180;
if(rollhi<-180)
rollhi=180;
if(rollhi2>180)
rollhi2=-180;
if(rollhi2<-180)
rollhi2=180;
if(rollhi3>180)
rollhi3=-180;
if(rollhi3<-180)
rollhi3=180;

if(key_q&&kmh<35)
kmh+=0.3*time_step;
if(key_a&&kmh>3)
kmh-=0.3*time_step;
if(key_cuu)
{
my.tilt+=tiltroll/2;
my.pan+=panroll/2;
}
if(key_cud)
{
my.tilt-=tiltroll/2;
my.pan-=panroll/2;
}
if(key_cur)
mh=5;
if(key_cul)
mh=-5;
if(!key_cul&&!key_cur)
mh=0;

my.roll+=mh*time_step;
rollhi-=mh*time_step;
rollhi2-=mh*time_step;
rollhi3-=mh*time_step;
c_move(my,vector(kmh*time_step,0,0),nullvector,IGNORE_MODELS+GLIDE);

if(my.roll>-90&&my.roll<90)
panroll=(my.roll)/30;
if(my.roll<-89&&my.roll>-180||my.roll>89&&my.roll<180)
panroll=(rollhi)/30;

if(rollhi2>-90&&rollhi2<90)
tiltroll=(rollhi2)/30;
if(rollhi2<-89&&rollhi2>-180||rollhi2>89&&rollhi2<180)
tiltroll=(-rollhi3)/30;


naja aber eben.... nich gerade seriös
Posted By: Altimeter

Re: Flugzeug mit konstruktionsproblem - 01/16/09 17:30

Das Problem liegt in der Flugphysik. Wenn dein Flugzeug Schräglage hat, dann zeigt der Auftriebsvector nicht mehr senkrecht nach oben, sondern steht schräg. Damit enthält er eine Komponente, die das Flugzeug zur Seite zieht.

Dein Programm müsste also zusätzlich auch eine c_move berechnung zur Seite machen. Müsste mit dem Sinus des Auftriebes gehen. Da ich bei dir keinen Auftrieb sehe, kannst du als Notbehelf auch sin(my.roll) * kmh nehmen. Deine pan-winkel änderung ergibt sich dann automatisch aus dem arc-Tangens des Seiten-kmh/Vorwärts-kmh verhältnisses, da das Flugzeug praktisch natürlich nicht quer fliegt (schiebt), sondern sich in die Strömung ausrichtet. Dafür ist das Seitenleitwerk da.
Flugmechanik ist ein komplexes Feld und schon wer halbwegs realistisches Verhalten will, kommt ohne Winkelfunktionen nicht hin. Denn du hast 6 Freiheitsgrade und für die bräuchte man mindestens 6 Funktionen pro loop.
Posted By: hopfel

Re: Flugzeug mit konstruktionsproblem - 01/16/09 18:23

Das heisst also wieder tüfteln smile wer sagt das Programierer faul sind! Dnake für die Antworten.
© 2024 lite-C Forums