heise online · c't · iX · Technology Review · Telepolis · mobil · Security · Netze · Open Source · Resale · Foto · Autos · c't-TV · Jobs · Kiosk
Zum Inhalt
c't

c't Projekte - c't-Bot und c't-Sim - Mailinglisten

c't-Bot und c't-Sim


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

AW: [ct-bot] neues Stackverhalten zum Merken relevanter Wegepositionen

Absender: Frank Menzel
Datum: So, 30.03.2008 13:25:39
In-reply-to: <57C32A17-3A43-4751-A508-DB68D26733B1@xxxxxxxxxxxxxxx>


Hallo,
also die Routine habe ich fast kopiert aus behaviour_goto_pos, wo es da
heisst:

/* Noch in die gewuenschte Blickrichtung drehen */
		int16_t to_turn = (int16_t)(dest_head -
(int16_t)heading) % 360;
			if (to_turn > 180) to_turn = 360 - to_turn;
			else if (to_turn < -180) to_turn += 360;
			LOG_DEBUG("to_turn=%d", to_turn);
			bot_turn(NULL, to_turn);


Soll eben nur die Winkeldifferenz berechnen... Tiefschürfende Gedanken
habe ich über die einzelnen Zeilen nicht verloren, da die Routine ja wie
gewollt zur Differenzermittlung zwischen Winkeln funktioniert...

Gruß, Frank Menzel


-----Ursprüngliche Nachricht-----
Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx
[mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] Im Auftrag von Timo
Sandmann
Gesendet: Samstag, 29. März 2008 20:00
An: Entwicklung rund um den c't-bot
Betreff: Re: [ct-bot] neues Stackverhalten zum Merken relevanter
Wegepositionen

Hallo,

ich habe da mal eine Frage zu folgender Funktion:

/*!
  * berechnet Winkeldifferenz zwischen aktueller Botausrichtung und  
einem Zielwinkel
  * param dest_head Zielwinkel
  * @return berechnete Winkeldifferenz
  */
int16 calc_diff_from_angles(int16 dest_head) {
	int16_t to_turn = (int16_t)(dest_head - (int16_t)heading) % 360;
	if (to_turn > 180) to_turn = 360 - to_turn;
	else if (to_turn < -180) to_turn += 360;
	to_turn = 360 - abs(to_turn);

	return to_turn;
}

Was genau soll die Funktion jetzt berechnen? Wenn die aktuelle  
Botausrichtung = 20 Grad ist, und ich die Funktion mit 10 aufrufe,  
kommt 350 heraus, wenn die aktuelle Botausrichtung = 10 Grad ist und  
ich die Funktion mit 20 aufrufe, kommt auch 350 heraus. Irgendwie ist  
das nicht das, was ich intuitiv erwarten würde nach der Dokumentation...
Und warum eigentlich modulo 360? dest_head und heading liegen doch  
beide immer zwischen 0 und 360.

Gruß Timo
_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler