## c't-Projekte - Mailinglisten

[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

- Referenzen:
  - Re: [ct-bot] neues Stackverhalten zum Merken relevanter Wegepositionen
    - From: Timo Sandmann

- Voriger (Datum): Re: [ct-bot] neues Stackverhalten zum Merken relevanter Wegepositionen, Timo Sandmann
- Nächster (Datum): Berechnung der Bot-Drehung (war: [ct-bot] neues Stackverhalten zum Merken relevanter Wegepositionen), Timo Sandmann
- Voriger (Thread): Re: [ct-bot] neues Stackverhalten zum Merken relevanter Wegepositionen, Timo Sandmann
- Nächster (Thread): Re: [ct-bot] neues Stackverhalten zum Merken relevanter Wegepositionen, Timo Sandmann
- Indizes:
  - Datum
  - Thread