急!一个Bresenham算法画椭圆的问题
下面是我的函数,请问为什么在VC里画不出来啊?
void CBasedrawView::Ellipse(float a, float b, float x0, float y0, CDC *pDC)
{
float d1,d2,x,y,t;
d1=b*b+a*a*(-b+0.25);
t=sqrt(a*a+b*b);
x=0,y=b;
pDC->SetPixel(x,y,RGB(100,100,100));
while(x<=(a*a/t)&&y<=(b*b/t))
{
if(d1<0)
{
d1+=b*b*(2*x+3);
}
else {
d1+=b*b*(2*x+3)+a*a*(-2*y+2);
y--;
}
x++;
pDC->SetPixel(x+x0,y+y0,RGB(100,100,100));
pDC->SetPixel(x+x0,-y+y0,RGB(100,100,100));
pDC->SetPixel(-x+x0,-y+y0,RGB(100,100,100));
pDC->SetPixel(-x+x0,y+y0,RGB(100,100,100));
}
d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b;
while(x<=a&&y<=0)
{
if(d2<0)
{
x++;
d2+=b*b*(2*x+2)+a*a*(-2*y+3);
}
else
{
d2+=a*a*(2*y+3);
}
y--;
pDC->SetPixel(x+x0,y+y0,RGB(100,100,100));
pDC->SetPixel(x+x0,-y+y0,RGB(100,100,100));
pDC->SetPixel(-x+x0,-y+y0,RGB(100,100,100));
pDC->SetPixel(-x+x0,y+y0,RGB(100,100,100));
}
}