绘制爱心曲线

现代数学的一个有趣的证明是 Georg Cantor 证明了有理数是可枚举的。在这篇博客中,我们将通过编程绘制一个简单而美丽的数学图形:爱心曲线。

爱心曲线代码

//爱心曲线  (x^2 + y^2 -a)^3 - x^2 * y^3 = 0
#include <iostream>
#include <cmath>
using namespace std;
int main(){
//画板大小
double a=1; //绘图边界
double bound=1.3 * sqrt(a); //变化步长
double step=0.05; //逐层扫描
for(double y=bound;y>-bound;y-=step){
for(double x=-bound;x<bound;x+=0.5*step){
double rs=pow(pow(x,2)+pow(y,2)-a,3)-pow(x,2)*pow(y,3);
if(rs<=0){
cout << "*";
}
else{
cout << " ";
}
}
cout << endl;
}
return 0;
}

解释

爱心曲线的方程是 [ (x^2 + y^2 - a)^3 - x^2 \cdot y^3 = 0 ]。这个方程描述了一个在二维平面上的爱心形状。

这段代码是用来绘制爱心曲线的,下面是对其中的参数和逻辑的解释:

  1. double a=1;: 这是爱心曲线方程中的参数,表示控制爱心的大小。你可以尝试改变这个值,看看对曲线形状有什么影响。比如,将 a 设置为不同的正数或零,观察爱心曲线的形状。

  2. double bound=1.3 * sqrt(a);: 这是绘图边界,用于确定绘图范围。它取决于参数 a 的值,以确保整个爱心曲线都在绘图范围内。你可以调整 1.3 这个系数来改变绘图边界的大小。

  3. double step=0.05;: 这是变化步长,表示在绘图时在 x 和 y 方向上每次变化的步长。较小的步长会产生更精细的曲线,但也会增加计算量。你可以尝试调整这个值,看看对曲线的细节有什么影响。

  4. for(double y=bound;y>-bound;y-=step): 外层循环是在 y 方向上进行扫描,从绘图边界的正上方开始,逐步向下扫描。

  5. for(double x=-bound;x<bound;x+=0.5*step): 内层循环是在 x 方向上进行扫描,从绘图边界的最左侧开始,逐步向右扫描。

  6. double rs=pow(pow(x,2)+pow(y,2)-a,3)-pow(x,2)*pow(y,3);: 这是计算爱心曲线方程的值,根据结果判断当前点是否在爱心曲线上。如果 rs 的值小于等于 0,则当前点在爱心曲线上。

  7. cout << "*";: 如果当前点在爱心曲线上,输出 *,表示该点在爱心的形状内;否则输出空格。

你可以通过调整这些参数,观察绘图结果的变化,以更好地理解这个爱心曲线的生成过程。

输出结果

用c++写 爱心图案的更多相关文章

  1. C语言控制台打印3D爱心图案

    非常多程序猿都认为自己的编程工作十分的鼓噪乏味.一整天面对的都是一些写不完的代码和改不完的Bug.今天我们要给大家分享一些有趣的C语言代码,也许能够为你无聊的工作带来一丝乐趣. 这些代码能够完毕几个不 ...

  2. 前端Tips#3 - 简写的 border-radius 100% 和 50% 是等效的

    本文同步自 JSCON简时空 - 技术博客,点击阅读 视频讲解 视频地址 文字讲解 1.先讲结论 border-radius 这个 css 属性大家应该使用得非常娴熟,现实中用到的场景基本都是四个圆角 ...

  3. 耗时一个月上架了一款微信小程序,赚了2022年的第一笔副收入

    今天不谈技术,只谈经历. 前戏 相信有很多的程序员都有一个产品梦,希望有一款属于自己产品.毕竟工作中遇到的有些"脑残"的产品经理不是一个两个,最后不得不因为"技术服务于业 ...

  4. web前端炫酷实用的HTML5应用和jQuery插件

    又开始了新的一天,我们也将继续为大家分享许多优秀的HTML5应用和jQuery插件,作为前端开发者来说,这些资源可以帮助你在项目开发上派上用场.下面一起来看看这些炫酷而实用的HTML5应用和jQuer ...

  5. 007-变量的作用域和LED点阵

    变量 一.局部变量和全局变量 局部变量:函数内申明的变量,只在函数内有效. 全局变量:函数外部申明的变量.一个源程序文件有一个或者多个函数,全局变量对他们都起作用. 备注:全局变量有副作用,降低了函数 ...

  6. 2017.12.1 如何用java写出一个菱形图案

    上机课自己写的代码 两个图形原理都是一样的 1.一共有仨个循环 注意搞清楚每一层循环需要做的事情 2.第一层循环:是用来控制行数 3.第二层循环控制打印空格数 4.第三层循环是用来循环输出星星 imp ...

  7. 六行python代码的爱心曲线

    前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题 ...

  8. 【C语言】用C语言输出“心形”图案

    在你们的世界里,是不是觉得程序猿一点浪漫都不懂?其实不是的,程序猿的世界也是很浪漫滴! 傻瓜版 int main() { printf("❤"); ; } 高级版 //版本一:单个 ...

  9. 使用原生JS,实现鼠标点击爱心效果 !!!

    使用原生JS,实现鼠标点击爱心效果 !!! 引言: 在很多时候我们都需要实现鼠标点击出现图案或者文字这样的效果,对于用户而言,这样的体验是很极致的.其实实现起来也很简单,下面一起来学习一下吧.文末附上 ...

  10. Quartz2D 编程指南(二)变换、图案、阴影

    概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 5.变换 简介 Quartz 2D ...

随机推荐

  1. tensorboard可视化点云

    tensorboard可视化点云 用 tensorboard 自带的 add_mesh 方法:支持可视化点云和网格,参考链接: tensorflow 网站的tensorboard pytorch 网站 ...

  2. 起风了,NCC 云原生项目孵化计划

    时间回到 2016 年,彼时 .NET Core 1.0 刚刚发布 1.0 版本,我跟几位好友共同发起 .NET Core 中文学习组(.NET Core China Studying Group)和 ...

  3. 23集训 Day4 数论

    快速幂 定义 快速幂,是一个在 \(\Theta(\log n)\) 的时间内计算 \(a^n\) 的小技巧,而暴力的计算需要 \(\Theta(n)\) 的时间. 解释 \[\because a^{ ...

  4. Opencv系列之一:简介与基本使用

    1 Opencv简介 Opencv是计算机视觉中经典的专用库,其支持多语言,跨平台,功能强大.Opencv-Python为Opencv提供了Python接口,使得使用者在Python中能够调用C/C+ ...

  5. Emit 实体绑定源码开源,支持类以及匿名类绑定(原创)

    动态实体绑定 主要有以下两种 1.表达式树构建委托 2.Emit构建委托 根据我的经验 Emit 代码量可以更少可以很好实现代码复用 Emit实践开源项目地址跳转 https://www.cnblog ...

  6. 一篇了解springboot3请求参数种类及接口测试

    SpringBoot3数据请求: 原始数据请求: //原始方式 @RequestMapping("/simpleParam") public String simpleParam( ...

  7. Acwing76场周赛

    题目链接 这次还是只做出来两道题,前两题都挺简单的,注意第二题需要开long long不开会wa,代码粘上来,以后可能会看吧 第一题 #include<iostream> #include ...

  8. [转]深入HBase架构解析

    HBase架构讲解非常清晰的一篇文章,转自 http://www.blogjava.net/DLevin/archive/2015/08/22/426877.htmlhttp://www.blogja ...

  9. Python 利用pandas和matplotlib绘制双柱状图

    在数据分析和可视化中,常用的一种图形类型是柱状图.柱状图能够清晰地展示不同分类变量的数值,并支持多组数据进行对比.本篇文章将介绍如何使用Python绘制双柱状图. 准备工作 在开始绘制柱状图之前,需要 ...

  10. 开源模型 Zephyr-7B 发布——跨越三大洲的合作

    最近我们刚刚发布了新的开源模型 Zephry-7B,这个模型的诞生离不开全球三大洲开源社区的协作 ️. 我们的 CSO Thomas 录了一个视频介绍了它的起源故事: 就在几个月前,巴黎的一个新团队发 ...