c语言 用*画出一个圆

Python010

c语言 用*画出一个圆,第1张

如果你用 wintc 或者可以用 graphic.h编程的话

void circ(int x,int y,int r,int c)

{

int i,ty,tx

for(i=xi<=x+r++i)

{

ty=sqrt(pow(r,2)-pow((i-x),2))+y

putpixel(i,ty,(i+ty)%c)

putpixel(i,2*y-ty,(i+ty)%c)

putpixel(2*x-i,ty,(i+ty)%c)

putpixel(2*x-i,2*y-ty,(i+ty)%c)

}

for(i=yi<=y+r++i)

{

tx=sqrt(pow(r,2)-pow((i-y),2))+x

putpixel(tx,i,(tx+i)%c)

putpixel(tx,2*y-i,(tx+i)%c)

putpixel(2*x-tx,i,(tx+i)%c)

putpixel(2*x-tx,2*y-i,(tx+i)%c)

}

}

四个变量分别是圆心坐标 xy,半径,颜色

原理是先画四分之一个圆,然后用左右上下对称画全

tx=sqrt(pow(r,2)-pow((i-y),2))+x 也就是圆标准方程的变形

附上一个画圆的程序wintc1.91图形模板编写的

/* WIN-TC BGI 图形编程模板 */

#include "Conio.h"

#include "graphics.h"

#include"stdlib.h"

#include"time.h"

#include"math.h"

#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=0k<50++k)

{

rr=rand()%150+50

x=(rand()%2)*2-1

y=(rand()%2)*2-1

for(i=1i<600++i)

circ(320+rr*x,240+rr*y,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=xi<=x+r++i)

{

ty=sqrt(pow(r,2)-pow((i-x),2))+y

putpixel(i,ty,(i+ty)%c)

putpixel(i,2*y-ty,(i+ty)%c)

putpixel(2*x-i,ty,(i+ty)%c)

putpixel(2*x-i,2*y-ty,(i+ty)%c)

}

for(i=yi<=y+r++i)

{

tx=sqrt(pow(r,2)-pow((i-y),2))+x

putpixel(tx,i,(tx+i)%c)

putpixel(tx,2*y-i,(tx+i)%c)

putpixel(2*x-tx,i,(tx+i)%c)

putpixel(2*x-tx,2*y-i,(tx+i)%c)

}

}

#include <graphics.h>

#include <stdio.h>

#include <math.h>

#define TWOPI (3.1415926*2)

typedef struct point

{

int x

int y

}POINT

void main()

{

int gd,gm

POINT arr[1000]

int i

int redius=80

gd=DETECT

initgraph(&gd,&gm,"C:\\JMSOFT\\DRV")

for(i=0i<1000i++)

{

arr[i].x=300+redius*sin(((1.0*i)/1000)*TWOPI)

arr[i].y=300+redius*cos(((1.0*i)/1000)*TWOPI)

}

for(i=0i<999i++)

line(arr[i].x,arr[i].y,arr[i+1].x,arr[i+1].y)

getch()

closegraph()

}