🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1947

Re: wrap around abfragen/verhindern

#1947
From: Karl-Heinz Krause
Date: Thu, 28 Mar 1996 18:09
45 lines
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-mail
References: <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