Discuz! Board

 找回密码
 立即注册
查看: 119|回复: 0

风车

[复制链接]

660

主题

846

帖子

243万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2435559

烈空座 Lv:100
发表于 2024-7-4 23:30:05 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
#include <graphics.h>					//包含EGE的头文件
#include<bits/stdc++.h>           
using namespace std;

PIMAGE Pimg1;
PIMAGE Pimg2;

#define PI 3.1415926
int width =800;
int height = 800; 
int R=400;
int t_cnt; 

struct dot{
	float x;//x坐标
	float y;//y坐标 
	float angle;//角度 
	float v;//角速度  每秒转多少度
	float R; 
	int color; 
}d[10]; 

void startup()//初始化 函数 
{		

	initgraph(width,height,INIT_RENDERMANUAL);				//初始化图形界面

	setbkcolor(BLACK);//设置背景颜色为白色
	setlinewidth(1);//设置线宽 
	setfillcolor(BLACK);//设置填充颜色为白色 
	setfont(25,0,"幼圆");//(字体高度,字体宽度(为0即为自适应),字形)设置字体为25,幼圆字体
	setbkmode(TRANSPARENT); //设置文字背景色为透明(默认为有背景色)	
	Pimg1 = newimage(width, height);
	Pimg2 = newimage(width, height);

	
	d[1].R = 300;
	d[1].x = width/2;
	d[1].y = height/2-d[1].R;
	d[1].v = 0.01;
	
	for(int i=2;i<9;i++)
	{
	 	d[i].R = 80;
	 	d[i].angle += (i-2)*(2*PI/7);
		d[i].x = d[i].x+d[i].R*sin(d[i].angle);
		d[i].y = d[1].y-d[i].R*cos(d[i].angle);
		d[i].v = 0.033;
	} 

	t_cnt = 0;

}

void update()
{
	//d[1].v += 0.0001;
	d[1].angle= fmod(d[1].angle+d[1].v,2*PI);
	d[1].x = width/2 + d[1].R*sin(d[1].angle);
	d[1].y = height/2- d[1].R*cos(d[1].angle);
	
	for(int i=2;i<9;i++)
	{	
		d[i].angle= d[i].angle+d[i].v;//fmod(d[i].angle+d[i].v,2*PI);
		d[i].x = d[1].x+d[i].R*sin(d[i].angle);//以上一个点为圆心 
		d[i].y = d[1].y-d[i].R*cos(d[i].angle);
	}

	
	t_cnt++;

	
}

void draw1(PIMAGE pimg)
{
	cleardevice(pimg);

	setcolor(CYAN,pimg);	//设置画图线颜色 
	circle(width/2,height/2,d[1].R,pimg);
	line(width/2,height/2,d[1].x,d[1].y,pimg);
	
	//circle(d[1].x,d[1].y,d[2].R,pimg);
	for(int i=2;i<9;i++)
	{	
		line(d[1].x,d[1].y,d[i].x,d[i].y,pimg);
	}
	for(int i=2;i<9;i++)
	{	
		setcolor(hsv2rgb(i*36, 1, 1),pimg);
		fillellipse(d[i].x, d[i].y, 3, 3,pimg); //画一个实心圆
	}
	
	cleardevice();//?
	putimage(0, 0, pimg, SRCPAINT);
}
void draw2(PIMAGE pimg)
{
	for(int i=2;i<9;i++)
	{	
		setcolor(hsv2rgb(i*36, 1, 1),pimg);
		fillellipse(d[i].x, d[i].y, 1, 1,pimg); //画一个实心圆
	}	
	putimage(0, 0, pimg, SRCPAINT);
}

int main()
{
	startup();
	while(1)
	{
		update();
		draw1(Pimg1);
		draw2(Pimg2);	
		Sleep(1);
	} 
	getch();							//暂停,等待键盘按键
	closegraph();        //关闭图形界面
	
	return 0;
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-5-29 23:03 , Processed in 0.056394 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

快速回复 返回顶部 返回列表