C++ week2

作者 by 超米 / 2024-03-21 / 暂无评论 / 49 个足迹

绘制同心圆

本部分作业为你提供了一个绘制图形的框架,你可根据所学的知识完成这次作业。目的是让你学会使用C++的基本语法,并利用EGE图形库绘制图形。

绘制的图形是在屏幕中央有一个半径为R1=160的大圆和一个同心的且半径为R2=120的小圆,同时在大圆和小圆中间均匀分布着n个与大圆和小圆相切的圆。n为用户输入的小圆个数,程序运行结果如图:
请输入图片描述

操作步骤

0)打开项目的.pro文件,在最后一行加入命令:

LIBS = -lgraphics -lgdi32 -limm32 -lmsimg32 -lole32 -loleaut32 -lwinmm -luuid -mwindows
1)我们要完成的项目是绘制图形,因此需要引入EGE图形库文件,在代码一开始的地方引入graphics.h文件。

2)定义存储圆内切正n边形顶点的数组x[n],y[n]

3)使用initgraph函数定义绘图窗口

4) 使用getInteger函数让用户输入内切小圆个数n

5)使用setcolor函数设置大圆的边线颜色,circle函数绘制大圆; 同样使用setcolor函数和circle函数设置小圆的边线颜色,绘制小圆,并填充以固实填充,黄色填充小圆内部;
请输入图片描述

6)同心圆内切小圆个数是n,这n个圆的圆心坐标是由计算下图白色圆的内切正多边形各个顶点得到的。

请输入图片描述
白色圆的半径r为(大圆半径+小圆半径)/2,它的内切正多边形的各个顶点坐标值为:

x = r × cos( i × 2 × π / n)

y = r × sin( i × 2 × π / n)

其中n表示内切小圆的总个数,i表示是第几个内切小圆。这里有n对圆心坐标,所以可以定义两个一维数组存储。使用循环语句完成n个小圆圆心的计算,并绘制小圆。每个小圆的填充色可使用EGERGB函数通过红、绿、蓝颜色分量合成颜色,红绿蓝颜色分量的值都是在0-255之间,因此,这三色的值可使用random函数控制随机生成0-255之间的值,从而得到随机的颜色。

EGERGB(random(256), random(256), random(256))

7) 让内切小圆颜色不断变化

通过不断刷新屏幕重绘图形实现内切小圆颜色的变化。

for (; is_run(); delay_fps(2)){

}

8)关闭绘图窗口

代码模板:

#include <cmath>

#include <graphics.h>

const float pi = 3.14159265;

const int ARRAY_LEN = 50;    //数组长度为50 

int main()

{

 //定义变量 

 double x[ARRAY_LEN] = {0};

 double y[ARRAY_LEN] = {0};

 int i = 0,j = 0;//循环变量

 int n = 0;//小圆的个数

 double r1 = 160,r2 = 120;//同心圆外圆和内圆的半径

 //请将你的代码写在这里

 //1)输入小圆的个数

 //2)生成同心圆

 //3)生成n个颜色可变的小圆

 return 0;

}

独特见解