Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
2 registered members (TipmyPip, AndrewAMD), 14,136 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
"gimbal lock"-Frage #113635
02/23/07 17:53
02/23/07 17:53
Joined: Jun 2005
Posts: 154
M
Marc Offline OP
Member
Marc  Offline OP
Member
M

Joined: Jun 2005
Posts: 154
Hi,

ich versuche nun schon seit einer ganzen Woche meine Winkel so zu berechnen wie in "Große Frage zu..." beschrieben, aber komme einfach nicht weiter.

broozar hat mich dan auf das "gimbal lock"-Problem hingewiesen.
Ich hab dan mal seinen Link verfolgt und mich bei Wiki über gimbal lock schlau gemacht.

Ich raffe aber einfach nicht wie das gehen soll.

alles was ich bisher hingekrigt habe ist dieser Code:

action AApasa
{
var z1; var z2; var z3;
var m1; var m2; var m3;
my.passable=on;
wait(1);
z1=my.x-bark1.x;
z2=my.y-bark1.y;
z3=my.z-bark1.z;
m1=my.pan;
m2=my.tilt;
m3=my.roll;

while(1){
my.passable=on;
vec_set(my.x,bark1);
vec_set(my.pan,bark2);
c_move(me,vector(z1,z2,z3),nullvector,IGNORE_YOU);

my.pan+=m1;
my.tilt+=m2;
my.roll+=m3;

wait(1);}
}

bark1 bezeichnet hier die Position des Bezugsobjeckts und bark2 seine Winkel.

Der Code funktioniert ganz gut, solange die Objekte mit dieser Action schön brav die Ausgangswinkel 0,0,0 haben. Aber das sollen sie ja nicht immer.

In jedem dritklassigem Panzer-Spiel ist dieses Problem gelöst.
(die Geschütze auf dem Panzern sind eigendtändige Objekte, die sich jedoch drehen können, also nicht nur die winkel 0,0,0 haben)

Re: "gimbal lock"-Frage [Re: Marc] #113636
02/23/07 19:34
02/23/07 19:34
Joined: May 2002
Posts: 7,441
ventilator Offline
Senior Expert
ventilator  Offline
Senior Expert

Joined: May 2002
Posts: 7,441
sieh dir mal die befehle ang_add und ang_rotate an. die verwenden intern quaternionrotationen und vermeiden somit gimbal lock probleme.

Re: "gimbal lock"-Frage [Re: ventilator] #113637
02/24/07 21:07
02/24/07 21:07
Joined: Jun 2005
Posts: 154
M
Marc Offline OP
Member
Marc  Offline OP
Member
M

Joined: Jun 2005
Posts: 154
Jeeeeaaaaaaa!!!!!!!

Geschaft!!!

hier ist der Code:

action AAbarke2
{var o_dist[3]; var mipa[3];
var o_ang[3]; var omp[3];

o_dist.x = my.x-bark1.x;
o_dist.y = my.y-bark1.y;
o_dist.z = my.z-bark1.z;
vec_set(mipa,my.pan);

vec_diff(omp,nullvector,o_dist);
vec_to_angle(o_ang,omp);
o_ang.roll = 0;

while(1)
{
vec_set(my.x,o_dist);//pos
vec_rotate(my.x,bark2.pan);//hmmm
vec_add(my.x,bark1.x);//pos
vec_set(my.pan,mipa);//o_ang
ang_add(my.pan,bark2.pan);//

wait(1); }
}

ihr braucht nur die Position des Bezugsobjeckt (bark1) und seine Winkel (bark2)
ich irgentwelche Vektoren zu speichern und dan DIESEN Code irgendeinem Objeckt geben, und schon bewegt es sich in perfeckter Relation zum Bezugsobjeckt.
(Es kann auch eine Person sein, die im Luping-fliegenden Raumschiff rumläuft.)

Ich danke allen die mir bei der Lösung dieses Problems Hinweise gegeben haben.

Bis bald

Marc


Gamestudio download | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1