当前位置: 首页 > ops >正文

趣味编程:抽象图(椭圆组成)

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

 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 图形库绘制了一个由椭圆组合而成的抽象图案。程序主要逻辑如下:

  1. 初始化部分

    • 创建 640×480 像素的绘图窗口
    • 将坐标系原点设置在窗口中央 (320,240)
  2. 核心绘制循环

    • 外层循环控制椭圆的数量,共绘制 100 个椭圆
    • 每次循环椭圆半径递减,形成从外到内的动画效果
  3. 椭圆绘制算法

    • 内层循环通过参数方程生成椭圆上的点
    • 使用旋转矩阵计算点的位置
    • 每个椭圆都有不同的旋转角度和离心率
    • 通过正弦余弦函数控制椭圆的变形和旋转
  4. 动画效果

    • 随着半径减小,不断绘制新的椭圆
    • 每次绘制后延时 20 毫秒,形成动画效果
    • 所有椭圆使用绿色像素绘制
  5. 收尾操作

    • 等待用户按键
    • 关闭图形窗口

这个程序的数学原理是通过参数方程和旋转矩阵生成椭圆轨迹,外层循环控制椭圆的大小和旋转角度,内层循环控制点的分布。通过这种方式,最终形成了一个由多个嵌套椭圆组成的抽象图案,并且带有平滑的动画效果。

4.小结

以上便是本篇博客的所有内容了,如果诸君学到EasyX绘图的便利与使用,还请给博主点点赞!!!

http://www.xdnf.cn/news/7823.html

相关文章:

  • Windows Docker笔记-扩展
  • AbMole| 蛋白酶抑制剂Cocktail(不含EDTA,100X DMSO储液)
  • Java SE 抽象类和接口(下)
  • JavaScript面试题之消息队列
  • 2.4.4-死锁的处理策略-检测和解除
  • origin绘图之【如何将多条重叠、高度重叠的点线图、折线图分开】
  • uni-app使用大集
  • uniapp-商城-64-后台 商品列表(商品修改---页面跳转,深浅copy应用,递归调用等)
  • STM32单片机GUI系统1 GUI基本内容
  • vue3 el-table 行号
  • ubuntu22.04上运行opentcs6.4版本
  • webpack5所用依赖以及对应的版本
  • [Harmony]自定义导航栏
  • 【Java基础笔记vlog】Java中常见的几种数组排序算法汇总详解
  • 算法分析与设计实验:找零钱问题的贪心算法与动态规划解决方案
  • Nginx网站服务
  • AI+MCP 自动发布小红书笔记
  • 【基础】Windows开发设置入门9:WSL 2 上的 Docker 容器
  • 基于Go语言的恶意软件通过Redis配置滥用向Linux主机部署XMRig挖矿程序
  • [论文精读]Ward: Provable RAG Dataset Inference via LLM Watermarks
  • 数据库健康监测器(BHM)实战:如何通过 HTML 报告识别潜在问题
  • Android OkHttp控制链:深入理解网络请求的流程管理
  • 动手学习深度学习V1.1 chapter2 (2.1-2.2)
  • 读一本书第一遍是快读还是细读?
  • 物理机做完bond后network服务重启失败
  • IntelliJ IDEA 接入 DeepSeek帮助你更好编码
  • net Core》》包与库 LibMan、NPM
  • 从加密到信任|密码重塑车路云一体化安全生态
  • 【Redis】二、Redis常用数据类型命令学习
  • 电感在断开的时候会按原来的电流方向流动这是什么定理?