
概述:本篇博客主要讲解由椭圆图案组合而成的抽象图形。

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绘图的便利与使用,还请给博主点点赞!!!
