计算机图形学代码_中点法画椭圆

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
MidPointEllipse(100,50,RGB(255,0,0),pDC->m_hDC);
}
squarea = a*a;
squareb = b*b;
xP = (int)(0.5+(float)squarea/sqrt((float)(squarea+squareb)));
yP = (int)(0.5+(float)squareb/sqrt((float)(squarea+squareb)));
x = 0;
y = b;
d = 4*(squareb - squarea*b)+squarea;
EllipsePoints(hdc,x,y,color);
while(x<=xP)
{
if(d<=0)
d += 4*squareb*(2*x+3);
else
{
d += 4*squareb*(2*x+3) - 8*squarea*(y-1);
这段代码是运行在VC环境下的用中点法画一个椭圆的部分。
主要是更改View下的代码。
void EllipsePoints(HDC hdc, int x, int y, COLORREF color)
{
SetPixel(hdc,x+200,y+100,color);
SetPixel(hdc,-x+200,y+100,color);
else
{
d += 4*squarea*(2*y+3)-8*squareb*(x-1);
x--;
}
y++;
EllipsePoints(hdc,x,y,color);
}
}
void CEllipseView::OnDraw(CDC* pDC)
{wk.baidu.com
CEllipseDoc* pDoc = GetDocument();
y--;
}
x++;
EllipsePoints(hdc,x,y,color);
}
x = a;
y = 0;
d = 4*(squarea - squareb*a)+squareb;
EllipsePoints(hdc,x,y,color);
while(y<yP)
{
if(d<=0)
d += 4*squarea*(2*y+3);
SetPixel(hdc,-x+200,-y+100,color);
SetPixel(hdc,x+200,-y+100,color);
}
void MidPointEllipse(int a, int b, COLORREF color, HDC hdc)
{
int x,y,d,xP,yP,squarea,squareb;
相关文档
最新文档