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

c++绘制爱心[特殊字符] 安装 EasyX 库

案例一:字符绘制爱心

cpp

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    double x, y, f;
    for (y = 1.5; y > -1.5; y -= 0.1) {
        for (x = -1.5; x < 1.5; x += 0.05) {
            f = (x * x + y * y - 1) * (x * x + y * y - 1) * (x * x + y * y - 1) - x * x * y * y * y;
            if (f <= 0) {
                cout << '*';
            } else {
                cout << ' ';
            }
        }
        cout << endl;
    }
    return 0;
}
分析:
  • 原理:利用数学公式 (x * x + y * y - 1) * (x * x + y * y - 1) * (x * x + y * y - 1) - x * x * y * y * y 来判断坐标点 (x, y) 是否在爱心区域内。当该公式结果小于等于 0 时,说明点在爱心内,输出 * 字符,否则输出空格 。
  • 外层循环for (y = 1.5; y > -1.5; y -= 0.1) 控制爱心在垂直方向上的扫描,每次 y 递减 0.1,相当于从爱心的顶部向底部逐行扫描。
  • 内层循环for (x = -1.5; x < 1.5; x += 0.05) 控制在水平方向上的扫描,每次 x 递增 0.05,从左到右扫描每一行。

案例二:跳动爱心(基于控制台简单实现)

cpp

#include <iostream>
#include <windows.h>
#include <cmath>
using namespace std;

void big_heart() {
    double x_1, y_1, m_1, n_1;
    for (y_1 = 1.5; y_1 > -1.5; y_1 -= 0.1) {
        for (x_1 = -1.5; x_1 <= 1.5; x_1 += 0.05) {
            m_1 = x_1 * x_1 + y_1 * y_1 - 1;
            n_1 = pow(m_1, 3) - pow(x_1, 2) * pow(y_1, 3);
            if (n_1 <= 0) {
                cout << '*';
            } else {
                cout << ' ';
            }
        }
        cout << endl;
    }
}

void small_heart() {
    double x, y, m, n;
    for (y = 3.0; y > -3.0; y -= 0.2) {
        for (x = -3.0; x <= 3.0; x += 0.1) {
            m = x * x + y * y - 1;
            n = pow(m, 3) - pow(x, 2) * pow(y, 3);
            if (n <= 0) {
                cout << '*';
            } else {
                cout << ' ';
            }
        }
        cout << endl;
    }
}

int main() {
    while (true) {
        system("cls");
        big_heart();
        Sleep(300);
        system("cls");
        small_heart();
        Sleep(300);
    }
    return 0;
}
分析:
  • 函数功能big_heart 函数用于绘制大爱心,small_heart 函数用于绘制小爱心,它们的原理和案例一类似,都是通过数学公式判断坐标点是否在爱心区域内并输出相应字符。
  • 主函数逻辑:在 main 函数中,通过 while (true) 实现一个无限循环。每次循环先使用 system("cls") 清屏,然后绘制大爱心,等待 300 毫秒(Sleep(300)),再次清屏后绘制小爱心,再等待 300 毫秒,如此反复,给人一种爱心跳动的视觉效果。
  • 回车

案例三:使用图形库绘制彩色爱心(以 EasyX 为例,需提前安装 EasyX 库 )

cpp

#include <graphics.h>
#include <iostream>
#include <cmath>
using namespace std;

// 爱心参数方程计算x坐标
double heart_x(double t) {
    return 16 * sin(t) * sin(t) * sin(t);
}

// 爱心参数方程计算y坐标
double heart_y(double t) {
    return 13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t);
}

int main() {
    initgraph(640, 480);  // 初始化绘图窗口
    setbkcolor(WHITE);    // 设置背景颜色为白色
    cleardevice();        // 用背景色清空窗口

    setcolor(RED);        // 设置绘图颜色为红色
    double t;
    for (t = 0; t < 2 * 3.1415926; t += 0.01) {
        double x = heart_x(t) * 10 + 320;  // 调整坐标使其在窗口合适位置
        double y = -heart_y(t) * 10 + 240; 
        putpixel(int(x), int(y), RED);  // 在指定坐标绘制像素点
    }
    getch();              // 等待按键
    closegraph();         // 关闭绘图窗口
    return 0;
}

分析:
  • 爱心参数方程:使用数学上的爱心参数方程来计算爱心轮廓上点的坐标。heart_x 函数和 heart_y 函数分别根据参数 t 计算爱心上点的 x 和 y 坐标。
  • 绘图过程:在 main 函数中,先初始化绘图窗口,设置背景色并清空窗口。然后设置绘图颜色为红色,通过循环让参数 t 从 0 变化到 2 * π,每次根据参数方程计算出坐标点,使用 putpixel 函数在窗口对应的位置绘制红色像素点,最终组成一个爱心形状。最后等待按键并关闭绘图窗口。

在 Visual Studio 中安装 EasyX 库

步骤 1:下载 EasyX 库安装程序

访问 EasyX 官方网站(EasyX Graphics Library for C++ ),在官网首页找到 “下载” 按钮,点击下载适合你系统的 EasyX 库安装程序。

步骤 2:运行安装程序

下载完成后,找到下载的安装程序并运行。在安装界面中,安装程序会自动检测你系统中已安装的 Visual Studio 版本。

步骤 3:选择安装路径和版本

在安装程序中,选择你要安装 EasyX 库的 Visual Studio 版本(如果有多个版本)。你可以根据自己的需求选择安装路径,一般建议使用默认路径。

步骤 4:完成安装

点击 “安装” 按钮,等待安装过程完成。安装完成后,会弹出安装成功的提示框。

步骤 5:验证安装

打开 Visual Studio,创建一个新的 C++ 控制台项目,在代码中包含 EasyX 库的头文件并编写简单的绘图代码进行测试,示例代码如下:

cpp

#include <graphics.h>
#include <conio.h>

int main()
{
    initgraph(640, 480);  // 初始化图形窗口
    circle(320, 240, 100);  // 绘制一个圆形
    _getch();  // 等待按键
    closegraph();  // 关闭图形窗口
    return 0;
}

编译并运行上述代码,如果能正常显示一个圆形窗口,则说明 EasyX 库安装成功。

在 Dev-C++ 中安装 EasyX 库

步骤 1:下载 EasyX 库文件

访问 EasyX 官方网站下载 EasyX 库文件,下载完成后解压。

步骤 2:复制头文件和库文件

  • 复制头文件:找到解压后的文件中 include 文件夹里的 graphics.h 文件,将其复制到 Dev-C++ 安装目录下的 MinGW64\include 文件夹中(如果是 32 位系统则是 MinGW32\include)。
  • 复制库文件:将解压后的文件中 lib 文件夹里的 libeasyx.a 文件,复制到 Dev-C++ 安装目录下的 MinGW64\lib 文件夹中(如果是 32 位系统则是 MinGW32\lib)。
  • 确保下载的 EasyX 库版本与你的开发环境和系统位数(32 位或 64 位)相匹配。
  • 在安装过程中,如果遇到权限问题,可能需要以管理员身份运行安装程序或复制文件。

相关文章:

  • scala-stwitch分支结构
  • 【从0到1学Docker】Docker学习笔记
  • Java常用工具算法-1--哈希算法(MD5,SHA家族,SHA-256,BLAKE2)
  • 3万字长文详解Android AIDL 接口设计
  • 1.oracle修改配置文件
  • 区间预测 | MATLAB实现QRBiGRU门控循环单元分位数回归时间序列区间预测
  • 【SQL性能优化】预编译SQL:从注入防御到性能飞跃
  • 【复活吧,我的爱机!】Ideapad300-15isk拆机升级:加内存条 + 换固态硬盘 + 换电源
  • 腾讯位置服务学习记录
  • 汇编学习之《变址寄存器》
  • 下载安装mingw配置C++编译环境 及C环境
  • 深入理解 YUV 颜色空间:从原理到 Android 视频渲染
  • 【前端】创建一个vue3+JavaScript项目流程
  • 指纹浏览器技术解析:如何实现多账号安全运营与隐私保护
  • 横扫SQL面试——时间序列分组与合并(会话划分)问题
  • 3.27-1 pymysql下载及使用
  • win10之mysql server 8.0.41安装
  • 从像素到二值化:OpenCV图像处理实战入门指南
  • 虫洞数观系列二 | Python+MySQL高效封装:为pandas数据分析铺路
  • Spring Boot中常用内嵌数据库(H2、HSQLDB、Derby)的对比,包含配置示例和关键差异总结
  • wordpress 仿站步骤/seowhy官网
  • 去设计公司还是去企业/深圳搜索引擎优化seo
  • 硬件开发学什么专业/站长之家seo综合
  • 去菲律宾做it网站开发/seo工作室
  • 一品威客旅游网站开发/免费推广引流平台推荐
  • 佛山网站建设哪个好点/百度搜索引擎优化