趣味编程:抽象图(椭圆组成)
概述:本篇博客主要讲解由椭圆图案组合而成的抽象图形。
1.效果展示
该程序的实际运行是一个动态的效果,因此实际运行相较于博客图片更加灵动。
2.源码展示
// 程序名称:椭圆组合而成的抽象图案//
#include <graphics.h>
#include <conio.h>
#include <math.h>const double PI = 3.1415926536;// 四舍五入
int Round(double x)
{return (int)(x < 0 ? x - 0.5 : x + 0.5);
}// 主函数
int main()
{// 初始化initgraph(640, 480); // 创建绘图窗口setorigin(320, 240); // 设置原点为屏幕中央double r = 58;double csin = sin(2 * PI / 200);double ccos = cos(2 * PI / 200);for (int j = 0; j < 100; j++, r -= 0.9){double tsin = sin(2 * PI * j / 100);double tcos = cos(2 * PI * j / 100);double x = 0;double y = r;for (int i = 0; i < 200; i++){double temp = x;x = x * ccos + y * csin;y = y * ccos - temp * csin;int scrx = Round(x * tcos + y * 4 * tsin);int scry = Round(y * 4 * tcos - x * tsin);putpixel(scrx, -scry, GREEN);}Sleep(20);}_getch();closegraph();return 0;
}
3.逻辑概述
这段程序使用 EasyX 图形库绘制了一个由椭圆组合而成的抽象图案。程序主要逻辑如下:
-
初始化部分:
- 创建 640×480 像素的绘图窗口
- 将坐标系原点设置在窗口中央 (320,240)
-
核心绘制循环:
- 外层循环控制椭圆的数量,共绘制 100 个椭圆
- 每次循环椭圆半径递减,形成从外到内的动画效果
-
椭圆绘制算法:
- 内层循环通过参数方程生成椭圆上的点
- 使用旋转矩阵计算点的位置
- 每个椭圆都有不同的旋转角度和离心率
- 通过正弦余弦函数控制椭圆的变形和旋转
-
动画效果:
- 随着半径减小,不断绘制新的椭圆
- 每次绘制后延时 20 毫秒,形成动画效果
- 所有椭圆使用绿色像素绘制
-
收尾操作:
- 等待用户按键
- 关闭图形窗口
这个程序的数学原理是通过参数方程和旋转矩阵生成椭圆轨迹,外层循环控制椭圆的大小和旋转角度,内层循环控制点的分布。通过这种方式,最终形成了一个由多个嵌套椭圆组成的抽象图案,并且带有平滑的动画效果。
4.小结
以上便是本篇博客的所有内容了,如果诸君学到EasyX绘图的便利与使用,还请给博主点点赞!!!