绘制爱心曲线

现代数学的一个有趣的证明是 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. Aho-Corasick 算法 AC自动机实现

    敏感词过滤在社区发帖.网站检索.短信发送等场景下是很常见的需求,尤其是在高并发场景下如何实现敏感词过滤,都对过滤算法提出了更高的性能要求,Ahocorasick算法能够实现毫秒级的万字过滤匹配,能够很 ...

  2. 【信创】 JED on 鲲鹏(ARM) 调优步骤与成果

    项目背景 基于国家对信创项目的大力推进,为了自主可控的技术发展,基础组件将逐步由国产组件替代,因此从数据库入手,将弹性库JED部署在 国产华为鲲鹏机器上(基于ARM架构)进行调优,与Intel (X8 ...

  3. CF1526C1

    题目简化和分析: 给您一个数组,在其中选择若干个数使得: 任意前缀和 \(\ge 0\) 数量尽可能的大 我们可以使用贪心策略,策略如下: 如果当前数为非负,必喝. 而毒药尽可能的多喝,如果喝没了,就 ...

  4. 基于GPS定位和人脸识别的作业识别管理系统

    一.技术参数 mysql5.5 asp.net jquery 高德地图api 百度人脸识别api 二.功能简介 实现简单的施工项目管理,包括项目地点,工期,名称,编号等 实现作业人员的档案信息管理,包 ...

  5. js数据结构--集合

    <!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...

  6. 文心一言 VS 讯飞星火 VS chatgpt (129)-- 算法导论11.1 4题

    四.用go语言,我们希望在一个非常大的数组上,通过利用直接寻址的方式来实现一个字典.开始时该数组中可能包含一些无用信息,但要对整个数组进行初始化是不太实际的,因为该数组的规模太大.请给出在大数组上实现 ...

  7. mediakit 源码 轻微微 学习总结

    mediakit 源码 轻微微 学习总结 概要 项目地址:https://github.com/ZLMediaKit/ZLMediaKit 此项目我们把他做为一个流媒体服务器,我们会有srt和rtsp ...

  8. Go 接口:Go中最强大的魔法,接口应用模式或惯例介绍

    Go 接口:Go中最强大的魔法,接口应用模式或惯例介绍 目录 Go 接口:Go中最强大的魔法,接口应用模式或惯例介绍 一.前置原则 二.一切皆组合 2.1 一切皆组合 2.2 垂直组合 2.2.1 第 ...

  9. MySQL函数解读

    一.字符串函数 1.1.instr() INSTR(str,substr)一共有两个参数str被查询字符,substr查询字符,查询时下标从1开始记,只查询第一次出现的地方,为查询到显示为0 一般用法 ...

  10. 01Java学习_概述

    概述 目录 概述 三个阶段 概述 历史(了解) Java 重要特点 开发工具 Java 运行机制及运行过程 下载和安装 JDK 配置环境变量 java 快速入门 博客中的图片内容全部采用 github ...