谁有中点画线法绘直线,bresenham画线法绘直线,多边形,bresenham画圆法,还有汉字生成的c语言源程序

这些计算机图形学中的问题,对我这个c语言学的不好的真实很难办到,也学对您来说就是小菜一碟,哪位大哥大姐帮助以下在下不胜感激!!!... 这些计算机图形学中的问题,对我这个c语言学的不好的真实很难办到,也学对您来说就是小菜一碟,哪位大哥大姐帮助以下在下不胜感激!!! 展开
 我来答
梦若素水
2007-04-30 · TA获得超过210个赞
知道小有建树答主
回答量:209
采纳率:100%
帮助的人:182万
展开全部
哈哈,把我们实验课的成就给你吧,都在实验室里通过的。不过没有你要的全部

#include <stdafx.h>
#include <math.h>
#define ROUND(a) ((int) (a+0.5))
void bresenham(CDC* pdc,int xs,int ys,int xe,int ye,COLORREF color)//直线
{
int dx=xe-xs;
int dy=ye-ys;
int xinc,yinc;
if(dx>0)
xinc=1;
else
xinc=-1;
if(dy>0)
yinc=1;
else
yinc=-1;
dx=abs(dx);dy=abs(dy);
int x=xs,y=ys;
int i=0;
if(dx==0&&dy==0)
pdc->SetPixel(x,y,color);
else if(dx==0)
{
for(i=0;i<dy;i++)
{
pdc->SetPixel(x,y,color);
y+=yinc;
}
}
else if(dy==0)
{
for(i=0;i<dx;i++)
{
pdc->SetPixel(x,y,color);
x+=xinc;
}
}
else if(dx>dy)
{
int p=2*dy-dx;
int inc1=2*dy,inc2=2*(dy-dx);
for(i=0;i<dx;i++)
{
pdc->SetPixel(x,y,color);
x+=xinc;
if(p<0)
p+=inc1;
else
{
y+=yinc;
p+=inc2;
}
}
}
else
{
int p=2*dx-dy;
int inc1=2*dx,inc2=2*(dx-dy);
for(i=0;i<dy;i++)
{
pdc->SetPixel(x,y,color);
y+=yinc;
if(p<0)
p+=inc1;
else
{
x+=xinc;
p+=inc2;
}
}
}
}

中点圆:

#include "stdafx.h"

void circlePlotPoints(CDC *pdc, int xc,int yc,int x,int y,COLORREF color);

void MidpointCircle(CDC* pdc,int xc,int yc,int r,COLORREF color)
{
int x=0;
int y=r;
int p=1-r;
while(x<=y)
{
circlePlotPoints(pdc, xc,yc,x,y,color);
x++;
if(p<0)
p+=2*x+1;
else
{
y--;
p+=2*(x-y)+1;
}
}
}

void circlePlotPoints(CDC *pdc, int xc,int yc,int x,int y,COLORREF color)
{
pdc->SetPixel(xc+x,yc+y,color);
pdc->SetPixel(xc+x,yc-y,color);
pdc->SetPixel(xc-x,yc+y,color);
pdc->SetPixel(xc-x,yc-y,color);
pdc->SetPixel(xc+y,yc+x,color);
pdc->SetPixel(xc+y,yc-x,color);
pdc->SetPixel(xc-y,yc+x,color);
pdc->SetPixel(xc-y,yc-x,color);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式