Gamestudio Links
Zorro Links
Newest Posts
AlpacaZorroPlugin v1.3.0 Released
by kzhao. 05/19/24 18:45
Free Live Data for Zorro with Paper Trading?
by AbrahamR. 05/18/24 13:28
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
4 registered members (AndrewAMD, 7th_zorro, TedMar, Ayumi), 800 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
vec_to_angle problem #334859
07/25/10 16:56
07/25/10 16:56
Joined: May 2010
Posts: 117
Germany , Dortmund
B
Bone Offline OP
Member
Bone  Offline OP
Member
B

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:
Code:
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 laugh

good evening

Last edited by Bone; 07/25/10 16:58.
Re: vec_to_angle problem [Re: Bone] #334867
07/25/10 17:48
07/25/10 17:48
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Why don't you use while(position > some small value) ?!
When you are programming you will always have to deal with inaccuracies, they result from the implementation and limitation of numbers on computers.


"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] #334870
07/25/10 17:59
07/25/10 17:59
Joined: Dec 2008
Posts: 271
Saturnus Offline
Member
Saturnus  Offline
Member

Joined: Dec 2008
Posts: 271
Also change

VECTOR* zwei = nullvector;
VECTOR* temp = nullvector;

to

VECTOR zwei;
VECTOR temp;

You don't really want to modify the nullvector, huh?

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
B
Bone Offline OP
Member
Bone  Offline OP
Member
B

Joined: May 2010
Posts: 117
Germany , Dortmund
I changed it wink

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 wink

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 Offline
Senior Expert
Superku  Offline
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
B
Bone Offline OP
Member
Bone  Offline OP
Member
B

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 laugh

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: Bone] #334889
07/25/10 19:35
07/25/10 19:35
Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
Superku Offline
Senior Expert
Superku  Offline
Senior Expert

Joined: Sep 2003
Posts: 6,861
Kiel (Germany)
"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"

Was meinst du genau?
Wenn deine Distanz bspw. noch 5 beträgt, du bei einer Distanz kleiner 2 die Schleife beendest und deine Lok pro frame um 10 quants bewegst, dann wird sie immer vor und zurückspringen, weil die Bewegung ja nicht fließend ist sondern stückweise (wegen pro frame 10 quants), der Betrachter empfindet es ja nur als flüssige Bewegung.


"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] #334899
07/25/10 20:05
07/25/10 20:05
Joined: May 2010
Posts: 117
Germany , Dortmund
B
Bone Offline OP
Member
Bone  Offline OP
Member
B

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.

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | 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