Article View: de.comp.lang.c++
Article #1947Re: wrap around abfragen/verhindern
From: Karl-Heinz Krause
Date: Thu, 28 Mar 1996 18:09
Date: Thu, 28 Mar 1996 18:09
45 lines
2054 bytes
2054 bytes
Am 25. März 1996 schrieb Joerg Bornemann (juri@compi.baltic.de):
> wr.right hat den Wert der Fensterbreite / 2,
> die erst zur Laufzeit feststeht.
>
> 1: for(i = -wr.right; i <= wr.right; i++)
> 2: {
> 3: // Es wird der Funktionswert von f(i)=i^3 berechnet
> 4: y = i*i*i; // Gleichung kann natuerlich auch anders lauten
> 5: ... Umrechnung in Fensterkoordinaten und Punkte zeichnen
> 6: }
In diesem speziellen Fall würde ich zunächst einmal die Multiplikation
in long-Arithmetik durführen. Damit hat man auf jeden Fall 32 Bit und
die Multiplikation ist für abs(i) <= 1280 sicher. Also etwa
folgendermaßen:
long y;
for (i = -wr.right; i <= wr.right; i++)
{
if (abs(i) <= 1280) {
y = long(i)*i*i; // Multiplikation in long-Arithmetik!
...
}
}
> In Zeile 4 erhalte ich somit in den ersten und in den letzten
> Schleifendurchgaengen einen wrap around. Die letzten wrap arounds kann ich
> verhindern, in dem ich negative y-Werte nach der Umrechnung in
> Bildschirmkoordinaten abfrage und die Schleife per *break* beende.
> Nur die ersten w.a.'s nicht.
> Nun koennte ich natuerlich zwei Schleifen schreiben. Eine fuer negative i
> und eine fuer positive i, aber das waere nur maessig effektiv, schlecht zu
> warten und ziemlich unuebersichtlich...
> cu Joerg
> --
> E-Mail: juri@compi.baltic.de
Karl-Heinz Krause
Technical Details
Message-ID:
<4jekll$rod@news00.btx.dtag.de>Path:
arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mailReferences:
<65QI1FlrHvB@compi.baltic.de> <M9P0B3FL@wuschel.ibb.schwaben.com> <65YKVe2rHvB@compi.baltic.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mail From: Krause@t-online.de (Karl-Heinz Krause) Newsgroups: de.comp.lang.c++ Subject: Re: wrap around abfragen/verhindern Date: 28 Mar 1996 18:09:57 GMT Organization: Telekom Online Internet Gateway Message-ID: <4jekll$rod@news00.btx.dtag.de> References: <65QI1FlrHvB@compi.baltic.de> <M9P0B3FL@wuschel.ibb.schwaben.com> <65YKVe2rHvB@compi.baltic.de> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Sender: 0913148778-0001@t-online.de (Karl-Heinz Krause) X-Newsreader: Forte Free Agent 1.0.82