昨天做了一个递归画圆的程序,但是因为在VC中找不到好的画圆形程序,自己写的画圆程序的效率差而且不好看,因此特意上网找了画圆程序以下,虽然我没有学过计算机图形学,但是了解下是应该的吧,首先下面的程序单是理论速度上就最起码已经是我自己写的1/8,实际上20倍都不只~~
以下转载自
http://songshp39.blogbus.com/logs/14557359.html
先得到1/8圆,在对称画出整个圆
//正负法画圆
void CGrawLineView::Drewcircle1(int cx, int cy, int r, CDC* pDC)
{
int x = r,y = 0,F = 0,n = r;
while(n > 0)
{
CirPot(cx,cy,x,y,pDC);
if (F <= 0)
{
F += 2*y+1;
y += 1;
}
else
{
F += 1-2*x;
x -= 1;
}
n--;
}
if (x == y)
CirPot(cx,cy,x,y,pDC);
}
//DDA法画圆(数值微分法)
void CGrawLineView::Drewcircle2(in