c't

c't-Projekte - Mailinglisten


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

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

Absender: Timo Sandmann
Datum: Sa, 29.03.2008 19:59:46
In-reply-to: <000401c8892e$86793350$0200a8c0@mexpnew>
References: <000401c8892e$86793350$0200a8c0@mexpnew>


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