|
 |
 |
 |
|
|
c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Benjamin Benz
Datum: Mo, 28.08.2006 16:13:06
In-reply-to:
<000801c6c872$966a8cb0$fe78a8c0@mexpnew>
References:
<000801c6c872$966a8cb0$fe78a8c0@mexpnew>
Frank Menzel wrote:
> Hallo,
> dies ist keine Antwort auf die Frage. Aber das Wegstecken der Division
> durch 0 ist mir auch schon aufgefallen. Ein paar Zeilen tiefer in der
> sensor.c heißt es:
> /* Schnittpunkt berechnen */
> xd=(a2-a1)/(s1-s2);
> yd=(s1*a2-s2*a1)/(s1-s2);
>
> Und s1-s2 ist durchaus 0, bereits zum Startzeitpunkt. Die Antwort würde
> mich auch interessieren.
Die ist ganz einfach. Wenn Sie den Code ein paar Zeilen darüber mitlesen:
/* Geradeausfahrt? (s1==s2) */
if (s1==s2) { /* Bei Geradeausfahrt ist v_left==v_right==v_center */
v_mou_left=v_mou_right=v_mou_center;
} else {
/* y-Achsenabschnitte berechnen */
a1=old_y-s1*old_x;
a2=y_mou-s2*x_mou;
/* Schnittpunkt berechnen */
xd=(a2-a1)/(s1-s2);
yd=(s1*a2-s2*a1)/(s1-s2);
...
}
So wird der Sonderfall s1==s2 vorher abgefangen.
MfG Benjamin Benz
--
Benjamin Benz
Heise Zeitschriften Verlag
Redaktion c't
eMail: bbe@xxxxxxxx
WWW : http://www.heise.de
|
|
|