计算机图形学第三章答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.

voidLine_Midpoint(int x1, int y1, int x2, int y2, int color) {

int x = x1, y = y1;

int a = y1 - y2, b = x2 - x1;

int cx = (b >= 0 ? 1 : (b = -b, -1));

int cy = (a <= 0 ? 1 : (a = -a, -1));

putpixel(x, y, color);

int d, d1, d2;

if (-a <= b) // 斜率绝对值 <= 1

{

d = 2 * a + b;

d1 = 2 * a;

d2 = 2 * (a + b);

while(x != x2)

{

if (d < 0)

y += cy, d += d2;

else

d += d1;

x += cx;

putpixel(x, y, color);

}

}

else // 斜率绝对值 > 1

{

d = 2 * b + a;

d1 = 2 * b;

d2 = 2 * (a + b);

while(y != y2)

{

if(d < 0)

d += d1;

else

x += cx, d += d2;

y += cy;

putpixel(x, y, color);

}

}

}

7

void Line_Midpoint(int x1, int y1, int x2, int y2, int color,

int flag)

{

intx,y;

if(flag==0)

{

x0=point.x;

y0=point.y;

flag=1;

}

else

{

flag=0;

x1=point.x;

y1=point.y;

a=y0-y1;

b=x1-x0;

d=2*a+b;

d1=2*a,

d2=2* (a+b);

x=x0, y=y0;

pDC->SetPixel(x, y+2, RGB(0,0,255));

pDC->SetPixel(x, y+1, RGB(0,0,255));

pDC->SetPixel(x, y, RGB(0,0,255));

pDC->SetPixel(x, y-1, RGB(0,0,255));

pDC->SetPixel(x, y-2, RGB(0,0,255));

while (x

{

if (d<0)

{x++; y++; d+=d2; }

else

{x++, d+=d1;}

pDC->SetPixel(x, y+2, RGB(0,0,255));

pDC->SetPixel(x, y+1, RGB(0,0,255));

pDC->SetPixel(x, y, RGB(0,0,255));

pDC->SetPixel(x, y-1, RGB(0,0,255));

pDC->SetPixel(x, y-2, RGB(0,0,255));

} /* while */

}

相关文档
最新文档