画圆简单但要依赖既有的函数库,你没有指定编译环境没法细说。tc、windows api、opengl等等很多。
给你个思想,首先指定圆心和半径,园周上的点与角度是服从y=sin(a),x=cos(a)正反弦函数关系的,依次规则可以从0到2派逐点将圆画出来。或者分别制定x轴或y轴的半径的起始点根据x的平方+y的平方=半径的公式对应的确定y和x再一次地画出正负的点。
用arc() 可画圆弧
功能: 函数arc()使用当前绘图色并以实线画一圆弧。
用法: 函数调用方式为void arc(int x,int y,int startangle,int endangle,int radius);
说明: 参数x,y为圆心坐标,startangle与endangle分别为起始角与终止角,radius为半径。圆心坐标和半径以像素个数给出,起始角和终止角以度为单位,0度位于右边,90度位于顶部,180度位于左边,底部是270度。同往常一样,360度与0度重合。角度按逆时针方向增加,但并不要求终止角一定比起始角大。例如指定300度和90度分别为起始角和终止角,与指定300度和450度分别为起始角和终止角可画出相同的弧。大于360度可作为参数,它将被化到0度 ̄360度范围里。函数arc()能画封闭圆,只要取起始角为0度,终止角为360度即可。此函数中,屏显纵横比可自动调节。
Win32下绘图一般都采用GDI。其中画圆的函数是通过画椭圆的函数来实现的:
BOOL
Ellipse(HDC
hdc,
int
nLeftRect,
int
nTopRect,
nRightRect,
int
nBottomRect);
函数功能:该函数用于画一个椭圆,椭圆的中心是限定矩形的中心,使用当前画笔画椭圆,用当前的画刷填充椭圆。
参数:
hdc:设备环境句柄。
nLeftRect:指定限定矩形左上角的X坐标。
nTopRect:指定限定矩形左上角的Y坐标。
nRightRect:指定限定矩形右下角的X坐标。
nBottomRect:指定限定矩形右下角的Y坐标。
返回值:如果函数调用成功,返回值非零;如果函数调用失败,返回值是0。
用C语言画圆可以通过编译程序的方法实现。
程序源代码:
#include "stdioh"
#include "graphicsh"
#include "conioh"
main()
{
int driver=VGA,mode=VGAHI;
int i,num=15,top=50;
int left=20,right=50;
initgraph(&driver,&mode,"");
for(i=0;i<num;i++)
{
ellipse(250,250,0,360,right,left);
ellipse(250,250,0,360,20,top);
rectangle(20-2i,20-2i,10(i+2),10(i+2));
right+=5;
left+=5;
top+=10;
}
getch();
}
如果你用 wintc 或者可以用 graphich编程的话
void circ(int x,int y,int r,int c)
{
int i,ty,tx;
for(i=x;i<=x+r;++i)
{
ty=sqrt(pow(r,2)-pow((i-x),2))+y;
putpixel(i,ty,(i+ty)%c);
putpixel(i,2y-ty,(i+ty)%c);
putpixel(2x-i,ty,(i+ty)%c);
putpixel(2x-i,2y-ty,(i+ty)%c);
}
for(i=y;i<=y+r;++i)
{
tx=sqrt(pow(r,2)-pow((i-y),2))+x;
putpixel(tx,i,(tx+i)%c);
putpixel(tx,2y-i,(tx+i)%c);
putpixel(2x-tx,i,(tx+i)%c);
putpixel(2x-tx,2y-i,(tx+i)%c);
}
}
四个变量分别是圆心坐标 xy,半径,颜色
原理是先画四分之一个圆,然后用左右上下对称画全
tx=sqrt(pow(r,2)-pow((i-y),2))+x; 也就是圆标准方程的变形
附上一个画圆的程序 wintc191图形模板编写的
/ WIN-TC BGI 图形编程模板 /
#include "Conioh"
#include "graphicsh"
#include"stdlibh"
#include"timeh"
#include"mathh"
#define closegr closegraph
void initgr(void) / BGI初始化 /
{
int gd = DETECT, gm = 0; / 和gd = VGA,gm = VGAHI是同样效果 /
registerbgidriver(EGAVGA_driver);/ 注册BGI驱动后可以不需要BGI文件的支持运行 /
initgraph(&gd, &gm, "");
}
int main(void)
{
int i,k,x,y,rr;
void circ(int,int,int,int) ;
int pr();
initgr(); / BGI初始化 /
srand(time(NULL));
for(k=0;k<50;++k)
{
rr=rand()%150+50;
x=(rand()%2)2-1;
y=(rand()%2)2-1;
for(i=1;i<600;++i)
circ(320+rrx,240+rry,i,k+2);
}
getch(); / 暂停一下,看看前面绘图代码的运行结果 /
closegr(); / 恢复TEXT屏幕模式 /
return 0;
}
int pr()
{
static int m=2;
if(m>=9) m=2;
return m++;
}
void circ(int x,int y,int r,int c)
{
int i,ty,tx;
for(i=x;i<=x+r;++i)
{
ty=sqrt(pow(r,2)-pow((i-x),2))+y;
putpixel(i,ty,(i+ty)%c);
putpixel(i,2y-ty,(i+ty)%c);
putpixel(2x-i,ty,(i+ty)%c);
putpixel(2x-i,2y-ty,(i+ty)%c);
}
for(i=y;i<=y+r;++i)
{
tx=sqrt(pow(r,2)-pow((i-y),2))+x;
putpixel(tx,i,(tx+i)%c);
putpixel(tx,2y-i,(tx+i)%c);
putpixel(2x-tx,i,(tx+i)%c);
putpixel(2x-tx,2y-i,(tx+i)%c);
}
}
可以先定义圆周率pi为31415926,再定义双精度变量半径r、高h、周长、面积、体积,输入相关数据后计算输出结果即可,实现该功能程序多样并不唯一,具体程序如下。
#include <stdioh>
void main()
{
double pi=31415926;
double r,h;
double c,area,v;
printf("输入圆的半径及圆柱的高:");
scanf("%lf%lf",&r,&h);
c=2pir; //周长计算
area=pirr; //面积计算
v=pirrh; //体积计算
printf("周长是:%lf\n",c);
printf("面积是:%lf\n",area);
printf("体积是:%lf\n",v);
printf("\n");
}
以上就是关于在编写c语言中,怎样编写才能用*画出一个圆,要能输入半径的,求大神给出代码~全部的内容,包括:在编写c语言中,怎样编写才能用*画出一个圆,要能输入半径的,求大神给出代码~、C语言画圆的格式是DrawFillCircle(x,y,1,color),问画圆弧的格式是什么、VC6.0下能运行C语言画圆函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)