在编写c语言中,怎样编写才能用*画出一个圆,要能输入半径的,求大神给出代码~

在编写c语言中,怎样编写才能用*画出一个圆,要能输入半径的,求大神给出代码~,第1张

画圆简单但要依赖既有的函数库,你没有指定编译环境没法细说。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语言画圆函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9502002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存