2 registered members (VoroneTZ, 7th_zorro),
1,332
guests, and 3
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
vec_to_angle problem
#334859
07/25/10 16:56
07/25/10 16:56
|
Joined: May 2010
Posts: 117 Germany , Dortmund
Bone
OP
Member
|
OP
Member
Joined: May 2010
Posts: 117
Germany , Dortmund
|
I want to move an entity to a position given by a vector. Is the entity at the position it shall stop. To know in which direction the entity must move I use vec_to_angle. With vec_dist I check whether the entity at the position or not. While the distance > 0 the entity move. There are two problems: If I don´t create the Entity at 0,0,0 the entity move a little bit next to the position given by the vector. In that case the vec_dist value is never 0. If the entity is at 0,0,0 it works with reservations. If the speed of the entity is too high the vec_dist value is also never 0. If the speed is 0.1 it works with 0.5 it doesn´t work I use this script:
var position = 1;
VECTOR* zwei = nullvector;
ENTITY* test_train;
action train()
{
test_train = me;
c_setminmax(test_train);
}
function move_train()
{
VECTOR* temp = nullvector;
vec_set(temp.x, zwei.x); //
vec_sub(temp.x,test_train.x); // from the vec_to_angle example
vec_to_angle(test_train.pan,temp.x); // from the vec_to_angle example
while(position != 0)
{
position = vec_dist(zwei.x,test_train.x);
c_move(test_train,vector(0.1,0,0), NULL, IGNORE_PASSABLE| GLIDE);
wait(1);
}
}
function main()
{
level_load("");
wait(1);
vec_set(zwei.x,vector(600,450,0)); // position the entity shall move to
ent_create("v200.mdl",vector(0,0,0), train); // train entity
on_k = move_train;
}
Anybody know the problem or have an idea what I can do? Thanks for read my post good evening
Last edited by Bone; 07/25/10 16:58.
|
|
|
Re: vec_to_angle problem
[Re: Saturnus]
#334879
07/25/10 18:54
07/25/10 18:54
|
Joined: May 2010
Posts: 117 Germany , Dortmund
Bone
OP
Member
|
OP
Member
Joined: May 2010
Posts: 117
Germany , Dortmund
|
I changed it Ich kann keine kleine Zahl nehmen da es ja schon exakt sein muss. Der Zug würde irgendwann irgendwo landen. Schon nach ein paar "Metern" fährt er dann ja schon neben den Gleisen und so ist es ja nicht richtig Es ist ja nur exakt wenn die Distanz zwischen der Position und dem Zug 0 ist. Edit: Ach quatsch. Hab da doch glaub ich n kleinen Denkfehler... Muss ich mir nochmal genau überlegen
Last edited by Bone; 07/25/10 19:07.
|
|
|
Re: vec_to_angle problem
[Re: Bone]
#334882
07/25/10 18:58
07/25/10 18:58
|
Joined: Sep 2003
Posts: 6,861 Kiel (Germany)
Superku
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
|
Du scheinst es nicht ganz zu verstehen, Computerzahlen sind NICHT exakt, das ist technisch unmöglich, du kannst keine nicht-periodische Zahl mit unendlich Nachkommastellen, wie es nun mal die irrationalen Zahlen sind, mit endlich vielen Informationen in den PC übertragen, d.h. bei deiner Distanz-Berechnung treten schon die ersten Ungenauigkeiten auf. Auch wird var nicht mit deiner gewünschten Exaktheit gespeichert, sondern nur mit einer Genauigkeit von 0.001.
Um dein Problem zu lösen: Ändere deinen Code in folgenden:
while(position > 0.5) {
position = vec_dist(zwei.x,test_train.x);
vec_set(temp.x, zwei.x); // vec_sub(temp.x,test_train.x); // from the vec_to_angle example vec_to_angle(test_train.pan,temp.x); // from the vec_to_angle example c_move(test_train,vector(0.1,0,0), NULL, IGNORE_PASSABLE| GLIDE); wait(1); }
"Falls das Resultat nicht einfach nur dermassen gut aussieht, sollten Sie nochmal von vorn anfangen..." - Manual Check out my new game: Pogostuck: Rage With Your Friends
|
|
|
Re: vec_to_angle problem
[Re: Superku]
#334883
07/25/10 19:08
07/25/10 19:08
|
Joined: May 2010
Posts: 117 Germany , Dortmund
Bone
OP
Member
|
OP
Member
Joined: May 2010
Posts: 117
Germany , Dortmund
|
Ja grad erkannt was du meintest Steh grad ein bisschen auf dem Schlauch scheint auch jetzt zu funktionieren Das macht wohl die müdigkeit. Vielen dank für die Hilfe Hier kommt man echt immer zum Ziel Obwohl ich auch noch nicht genau weiss warum. Die abweichung der Distanz bei höherer Geschwindigkeit lag nicht in bereich von +/- 10 sondern bei 30
Last edited by Bone; 07/25/10 19:13.
|
|
|
Re: vec_to_angle problem
[Re: Superku]
#334899
07/25/10 20:05
07/25/10 20:05
|
Joined: May 2010
Posts: 117 Germany , Dortmund
Bone
OP
Member
|
OP
Member
Joined: May 2010
Posts: 117
Germany , Dortmund
|
Das Problem war das wenn ich das Modell nicht an Position 0,0,0 erstellt hatte es immer an der Zielposition vorbei fuhr.
Demnach war dann die Distanz durch vec_dist immer 30+ , je nachdem wie weit vom Null Punkt erstellt wurde
Das hat sich aber jetzt zauberhafter weise erledigt. Edit :
Es gibt nun ein anderes Problem.
Es wird nicht immer angehalten am Endpunkt da ja die Distanz ungenau sein kann.
Ich hab die While Schleife für die Bewegung mit verschieden niedrigen Werten bestückt und dabei ist mir aufgefallen das zB bei positon > 0.1 öfter und schneller nicht am ende gestoppt wird (bzw jetzt nicht von vorne begonenn wird) also wenn ich position > 0.8 prüfe
Jetz fehlen mir Ideen. Ab und zu wird einfach weiter gefahren und das darf einfach nicht passieren
Last edited by Bone; 07/26/10 10:23.
|
|
|
|