Mail Archives: djgpp/1999/08/07/11:12:30
Message-ID: | <37AC37B8.B29A3614@unb.ca>
|
From: | Endlisnis <s257m AT unb DOT ca>
|
X-Mailer: | Mozilla 4.61 [en] (Win98; U)
|
X-Accept-Language: | en
|
MIME-Version: | 1.0
|
Newsgroups: | comp.os.msdos.djgpp,comp.programming
|
Subject: | Re: Circle Drawing Algorithms
|
References: | <7oh04k$3vb$1 AT newsreader2 DOT core DOT theplanet DOT net>
|
Lines: | 44
|
Date: | Sat, 07 Aug 1999 13:43:40 GMT
|
NNTP-Posting-Host: | 209.226.124.244
|
X-Trace: | news20.bellglobal.com 934033420 209.226.124.244 (Sat, 07 Aug 1999 09:43:40 EDT)
|
NNTP-Posting-Date: | Sat, 07 Aug 1999 09:43:40 EDT
|
Organization: | Sympatico
|
To: | djgpp AT delorie DOT com
|
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp
|
Reply-To: | djgpp AT delorie DOT com
|
Andy Kilner wrote:
> What is the fastest circle algorithm available at the moment?
This is a snip of code from my graphics library. It only draws 1/8th of the
circle and reflects the rest. Also, no multiplication or trig is done and
only integers are used.
void _GraphixBase::Circle(short X, short Y, short Radius, byte Clr)
{
short x=0;
short y=Radius;
short step=1-y;
while(y>=x)
{
Pset(X+x, Y+y, Clr);
Pset(X+y, Y+x, Clr);
Pset(X+y, Y-x, Clr);
Pset(X+x, Y-y, Clr);
Pset(X-x, Y-y, Clr);
Pset(X-y, Y-x, Clr);
Pset(X-y, Y+x, Clr);
Pset(X-x, Y+y, Clr);
if (step<0) step += x+x+3;
else
{
step += ((x-y)<<1)+5;
y--;
}
x++;
}
}
--
(\/) Endlisnis (\/)
s257m AT unb DOT ca
Endlisnis AT HotMail DOT com
ICQ: 32959047
- Raw text -