1.程序运行环境(必读)

Visual C++ 6.0、Visual Studio 2010 ~ Visual Studio 2022 等支持EasyX图形库的软件均可以使用,实现相应功能。

--------- >>  特别说明: 如果已经安装过 EasyX图形库,可直接看”代码实现“部分。  << ------------

2. EasyX 安装程序下载

点击下方下载链接,进入官网后点击右上角”下载“按钮即可下载EasyX安装程序。

                    EasyX 官网下载链接(点击跳转)

3. ” EasyX “ 安装步骤

(1)找到 并 打开下载好的EasyX安装程序,如下图所示。

(2)点击 下一步,如下图所示。

(3)根据软件版本安装 EasyX图形库,具体说明见下图。

(4)安装完成后点击 ”关闭“即可。

4.问题引入

根据方程 r = a(1 - cosθ) 绘制图像,本质上相当于一个圆绕另一个圆转一周时动圆上某个定点的轨迹所形成的图形。

5.代码实现(代码中已注释)

#include<stdio.h>
#include <math.h> //数学库
#include<conio.h>
#include<easyx.h> //图形库#define WIDTH  640 // 窗口宽度
#define HEIGHT  480  // 窗口高度
#define PI 3.14159265 //圆周率π
#define DISPLAY 3 // 展示出来动圆与定圆的交点及心脏线当前所在点的尺寸
#define ARROW   5   // 箭头的尺寸
#define COPIES  600 // 份数,看要获得心脏线上的多少个点
#define SECONDS 5   // 跑完一圈的秒数// 画坐标抽
void drawCoordinateAxis(){setlinecolor(DARKGRAY);line(WIDTH / 2, HEIGHT / 10, WIDTH / 2, HEIGHT / 10 * 9);line(WIDTH / 2, HEIGHT / 10, WIDTH / 2 + ARROW, HEIGHT / 10 + ARROW);line(WIDTH / 2, HEIGHT / 10, WIDTH / 2 - ARROW, HEIGHT / 10 + ARROW);line(WIDTH / 5, HEIGHT / 2, WIDTH / 5 * 4, HEIGHT / 2);line(WIDTH / 5 * 4, HEIGHT / 2, WIDTH / 5 * 4 - ARROW, HEIGHT / 2 - ARROW);line(WIDTH / 5 * 4, HEIGHT / 2, WIDTH / 5 * 4 - ARROW, HEIGHT / 2 + ARROW);
}int main(){initgraph(WIDTH, HEIGHT);BeginBatchDraw();setlinecolor(BLUE);// 画坐标轴,定圆double r = min(WIDTH, HEIGHT) / 9;circle(WIDTH / 2, HEIGHT / 2, r);drawCoordinateAxis();setrop2(R2_XORPEN);double lastX = WIDTH / 2.0, lastY = HEIGHT / 2 - r; for (double a = 0; !_kbhit(); a += PI / COPIES * 2)  {double x = cos(3.0 / 2.0 * PI + a) * 2 * r + WIDTH / 2; // 动圆圆心的 x 值double y = sin(3.0 / 2.0 * PI + a) * 2 * r + HEIGHT / 2;// 动圆圆心的 y 值double FixedPoint_X = cos(PI / 2.0 + a * 2) * r + x;// 当前循环动圆的定点对应的 x 值double FixedPoint_Y = sin(PI / 2.0 + a * 2) * r + y;// 当前循环动圆的定点对应的 y 值double Contact_X = cos(PI / 2.0 + a) * r + x;// 当前循环两圆切点在动圆上对应的 x 值double Contact_Y = sin(PI / 2.0 + a) * r + y;// 当前循环两圆切点在动圆上对应的 y 值// 画出心脏线,只用画这一个循环的点和上一个循环的点的线就行setrop2(R2_COPYPEN);setlinecolor(YELLOW);line(lastX, lastY, FixedPoint_X, FixedPoint_Y);setrop2(R2_XORPEN);lastX = FixedPoint_X;lastY = FixedPoint_Y;// 动圆与定圆的切点setfillcolor(GREEN);solidcircle(Contact_X, Contact_Y, DISPLAY);// 心脏线当前点setfillcolor(LIGHTRED);solidcircle(lastX, lastY, DISPLAY);// 动圆setlinecolor(BLUE);circle(x, y, r);FlushBatchDraw();Sleep((double)(1000 * SECONDS) / (double)COPIES + 0.5);// 消除动圆setlinecolor(BLUE);circle(x, y, r);// 消除动圆与定圆的交点setfillcolor(GREEN);solidcircle(Contact_X, Contact_Y, DISPLAY);// 消除心脏线当前所在点setfillcolor(LIGHTRED);solidcircle(lastX, lastY, DISPLAY);}_getch();EndBatchDraw();return 0;
}

6.运行结果

用C实现动态绘制“心型线”(心形图形)(数学图形)相关推荐

  1. html5动态画图,HTML5使用Canvas动态绘制心型线和玫瑰线的教程

    1HTML5的Canvas元素提供了丰富的绘图功能,能够使我们制作出许多精美的动画.本次将运用canvas绘制心型线和玫瑰线. 1.心型线和玫瑰线 绘制这两种曲线,首先我们分别选用两个参数方程(心型线 ...

  2. 怎样用html制作动态心,HTML5使用Canvas动态绘制心型线和玫瑰线的教程

    1html5的canvas元素提供了丰富的绘图功能,能够使我们制作出许多精美的动画.本次将运用canvas绘制心型线和玫瑰线. 1.心型线和玫瑰线 绘制这两种曲线,首先我们分别选用两个参数方程(心型线 ...

  3. HTML5 Canvas动态绘制心型线和玫瑰线

    1HTML5的Canvas元素提供了丰富的绘图功能,能够使我们制作出许多精美的动画.本次将运用canvas绘制心型线和玫瑰线. 1.心型线和玫瑰线 绘制这两种曲线,首先我们分别选用两个参数方程(心型线 ...

  4. 【matlab】 动态绘制三维心形图

    [转载]matlab动态绘制三维心形图 matlab动态绘制三维心形图程序如下,核心是isosurface函数,verts存储了心形曲面各点的坐标,而faces存储了各点的连接顺序. clear fi ...

  5. html+js画一颗心形,javascript绘制漂亮的心型线效果完整实例

    本文实例讲述了javascript绘制漂亮的心型线效果实现方法.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: JS心型线 div{ position:absolute; } . ...

  6. MATLAB绘制 心型线 和 马鞍面(双曲抛物面)

    写在前面 首先,我们是来学习怎么使用MatLab的,不是来学习高数的,我们只要知道图形对应的表达式就好了,其他的就不用管这么多了. 其次,不用一开始就强迫自己把相应的函数给记住,我们只要记住哪有,要用 ...

  7. 如何用matlab绘制心形线,心形线的matlab程序

    cosθ的心形线图像 图 2 ρ = 0.5 + cosθ的心形线图像 图 5 ρ = 1 ? cosθ的心形线图像 Matlab 绘制,附代码: theta=0:0.1:2*pi; rho1=1-. ...

  8. matlab画平面心型线,如何用matlab画出心形线

    心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹线.下面就简单讲解一下如何用matlab画出心形线. 1.心形线的数学定义 2.编制的绘制心形线的matlab程序 ...

  9. Python+matplotlib绘制散点图模拟心型图案

    推荐教材: <Python数据分析.挖掘与可视化>(慕课版)(ISBN:978-7-115-52361-7),董付国,人民邮电出版社,定价49.8元,2020年1月出版,2021年3月第6 ...

  10. 利用MATLAB绘制各种表白心形-跳动心形

    利用MATLAB绘制各种表白心形♥ 跳动三维心形 表白情人节必备 面向工科屌丝男 固定心形的各种画法见下面连接 链接: https://blog.csdn.net/weixin_44044161/ar ...

最新文章

  1. Visual Studio 2008 到底有多强?漫画告诉你 !
  2. Spring Boot 实战系列课程终于齐啦~
  3. oracle错误: ORA-00600: 内部错误代码, 参数: [kkqcscpopn_Int: 0], [], [], [], [], [], [], [], [], [], [], []...
  4. Catalan数的理解
  5. SpringMVC+MyBatis 返回时间格式转换的解决方案
  6. LeetCode刷题(26)
  7. 1.material组件的安装及其使用
  8. 正则,bs4 ,xpath 和jsonpath 的匹配规则
  9. racecar 尝试记录
  10. 音视频从入门到精通——视频 码率 帧率 分辨率
  11. “钱妈妈”平台犯罪嫌疑人被抓捕 涉嫌非法吸收公众存款
  12. MSDB数据库置疑状态的解决方法
  13. 物流查询然后给快递单号进行备注分享操作方法
  14. 计算机网络应用和计算机应用有什么区别,计算机网络和计算机应用有什么区别...
  15. java @around_正确理解Spring AOP中的Around advice
  16. Kinect深度图与摄像头RGB的标定与配准(文末总结不容错过)
  17. 简化JAVA配置环境
  18. VsCode 如何设置背景图以及字体颜色
  19. 物联网平台构架系列 (二):Amazon, Microsoft, IBM IoT 解决方案导论 之 设备
  20. android平板加密软件,购买安卓视频加密软件

热门文章

  1. Stuart Russell对话姚期智:为全人类设计AI系统,可以借鉴墨子「兼爱」思想丨2023智源大会AI安全与对齐论坛...
  2. 《论文写作》课程小结
  3. 骨灰级程序员的创业复盘:第一年盈利被当骗子,线下广阔天地大有可为
  4. android工程怎么运行,简单几步带你飞,运行Android Studio工程
  5. HashCode源码解析
  6. 将手机文本“复制粘贴”到电脑的方法
  7. Android复制的实现
  8. 一个可大规模悄无声息窃取淘宝/支付宝账号与密码的漏洞 -(埋雷式攻击附带视频演示)
  9. SQL Server数据库SP命令祥解
  10. 计算机硬件清理步骤,清洁计算机硬件的方法