资源简介
其中还包括圆的参数式算法和圆的隐式方程算法,但是都是1/8圆。你们可以自行尝试修改成整圆。
可运行。环境是vc++6.0 。请看txt必读。谢谢
代码片段和文件信息
#include
#include
#include
#include
/*
void CirclePoints(int xCenterint yCenterint xint yint RGB_value)
{
putpixel(x+xCentery+yCenterRGB_value);
putpixel(y+xCenterx+yCenterRGB_value);
putpixel(y+xCenter-x+yCenterRGB_value);
putpixel(x+xCenter-y+yCenterRGB_value);
putpixel(-x+xCenter-y+yCenterRGB_value);
putpixel(-y+xCenter-x+yCenterRGB_value);
putpixel(-y+xCenterx+yCenterRGB_value);
putpixel(-x+xCentery+yCenterRGB_value);
}
*/
//八分之一圆
void CirclePoints(int xCenterint yCenterint xint yint RGB_value)
{
putpixel(x+xCentery+yCenterRGB_value);
}
//圆的隐式方程算法
void SipmeCicle(int Rint RGB_value)
{
int xy;
for(x=0;x<=R;x++)
{
y=int(sqrt(R*R-x*x)+0.5);
putpixel(xyRGB_value);
}
}
//圆的参数式算法
void ParameterCicle(int R int RGB_value)
{
int xy;
for(double t=0;t<=PI/2;t+=0.05)
{
x=int(R*cos(t)+0.5);
y=int(R*sin(t)+0.5);
putpixel(xyRGB_value);
}
}
//Bresenham画圆算法
void BresenhamCicle(int xCenterint yCenterint radiusint RGB_value)
{
int x=0;
int y=radius;
int d=3-2*radius;
while(x<=y)
{
CirclePoints(xCenteryCenterxyRGB_value);
if(d<=0)
{
d+=4*x+6;
}
else
{
d+=4*(x-y)+10;
y=y-1;
}
x=x+1;
}
}
//中点圆整数优化算法
void MidPointCircleInt(int xCenterint yCenterint radiusint RGB_value)
{
int x=0;
int y=radius;
int d=1-radius;
int dt=3;
int db=-2*radius+5;
while(y>x)
{
CirclePoints(xCenteryCenterxyRGB_value);
if(d<0)
{
d+=dt;
dt+=2;
db+=2;
}
else
{
d+=db;
dt+=2;
db+=4;
y--;
}
x++;
}
}
void main()
{
initgraph(640 480);
// setwindow(240 240 640 480 1);
// SipmeCicle(100WHITE);
// ParameterCicle(100WHITE);
//(240240)为圆心,80为半径
// BresenhamCicle(24024080WHITE);
//(240240)为圆心,50为半径
MidPointCircleInt(24024050YELLOW);
getch();
closegraph();
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 281 2009-11-02 07:06 必读.txt
文件 75226 2009-10-29 21:48 VCBGI-20090909.zip
文件 2038 2009-11-01 13:28 Circular.cpp
----------- --------- ---------- ----- ----
77545 3
- 上一篇:C语言 聊天室
- 下一篇:C++ 先进先出算法FIFO
评论
共有 条评论