C++和Java命令行绘制心形图案

心形线

心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名。

心脏线亦为蚶线的一种。在曼德博集合正中间的图形便是一个心脏线。心脏线的英文名称“Cardioid”是 de Castillon 在1741年的《Philosophical Transactions of the Royal Society》发表的;意为“像心脏的”。

极坐标方程

水平方向: ρ=a(1-cosθ) 或 ρ=a(1+cosθ) (a>0)

垂直方向: ρ=a(1-sinθ) 或 ρ=a(1+sinθ) (a>0)

直角坐标方程

心形线的平面直角坐标系方程表达式分别为 x^2+y^2+a*x=a*sqrt(x^2+y^2) 和 x^2+y^2-a*x=a*sqrt(x^2+y^2)

参数方程

x=a*(2*cos(t)-cos(2*t))

y=a*(2*sin(t)-sin(2*t))

所围面积为3/2*PI*a^2,形成的弧长为8a

通过不同变换可以有如下样式

解题思路

在直角坐标系中x、y轴的正方向分别是右侧和上方,原点在中间;而在命令行中正方向分别是右方和下方,原点在左上角。因此就需要进行坐标轴变换。

由于直角坐标系中的心形线是横着的,因此需要xy轴的变换。

由于在命令行具有行高这一固定参数,因此同样字符数的行和列长度是不同的(行会比列短很多),因此又需要进行控制台x轴的拉伸操作。

C++代码

#include

#include

using namespace std;

#define X_DIVIDED_BY_Y 0.5

#define MAX_X (35.0 / X_DIVIDED_BY_Y)

#define MAX_Y 35.0

#define THRESHOLD 0.5

#define A 13

char getSentenceChar(const char *sentence, int &index) {

while(true) {

if (index >= strlen(sentence)) {

index = 0;

}

char c = sentence[index++];

if(' ' == c) {

index++;

} else {

return c;

}

}

}

inline float getX(float x) {

return (x - MAX_X / 2) * X_DIVIDED_BY_Y;

}

inline float getY(float y) {

return MAX_Y / 7.0 - y;

}

bool func(float x, float y) {

return (pow(x, 2) + pow(y, 2) + A * x - A * sqrt(pow(x, 2) + pow(y, 2))) < THRESHOLD;

}

void main(int argc, char** argv) {

const char *LOVE_SENTENCE = "No rose, no diamond ring, that is the simple and romantic love stories in college. The graduates have to face the approaching of June, a time to farewell their beloved. When their future is confronted with love, which one is more important? What will the lovers do in June?";

int sentenceIndex = 0;

for (int y = 0; y <= MAX_Y; y++) {

for (int x = 0; x <= MAX_X; x++) {

cout<

}

cout<

}

}

Java代码

package com.example.demo;

public class BenevolenceDemo {

private static final float X_DIVIDED_BY_Y = 0.5f;

private static final float MAX_X = 35f / X_DIVIDED_BY_Y;

private static final float MAX_Y = 35f;

private static final float THRESHOLD = 0.5f;

private static final float A = 13;

private static final String LOVE_SENTENCE = "No rose, no diamond ring, that is the simple and romantic love stories in college. The graduates have to face the approaching of June, a time to farewell their beloved. When their future is confronted with love, which one is more important? What will the lovers do in June?";

private static int sentenceIndex = 0;

private static char getSentenceChar() {

while(true) {

if (sentenceIndex >= LOVE_SENTENCE.length()) {

sentenceIndex = 0;

}

char c = LOVE_SENTENCE.charAt(sentenceIndex++);

if(' ' == c) {

sentenceIndex++;

} else {

return c;

}

}

}

public static void main(String[] args) {

for (int y = 0; y <= MAX_Y; y++) {

for (int x = 0; x <= MAX_X; x++) {

System.out.print(func(getY(y), getX(x)) ? getSentenceChar() : '=');

}

System.out.println();

}

}

public static final float getX(float x) {

return (x - MAX_X / 2) * X_DIVIDED_BY_Y;

}

public static final float getY(float y) {

return MAX_Y / 7f - y;

}

public static boolean func(float x, float y) {

return (Math.pow(x, 2) + Math.pow(y, 2) + A * x - A * Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))) < THRESHOLD;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

您可能感兴趣的文章:

python心脏线绘制代码_C++和Java命令行绘制心形图代码分享相关推荐

  1. 用java画爱心图_C++和Java命令行绘制心形图案

    心形线 心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名. 心脏线亦为蚶线的一种.在曼德博集合正中间的图形便是一个心脏线.心脏线的英文名称& ...

  2. C/C++ 和 Java 命令行绘制心形图案

    心形线 心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名. 心脏线亦为蚶线的一种.在曼德博集合正中间的图形便是一个心脏线.心脏线的英文名称& ...

  3. python测网速_使用Linux命令行测试网速(示例代码)

    当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为"最后一公里")的网络连接速度.在可用于测试宽带速度的网站中,Speedtest.net也许是使用最 ...

  4. 使用R语言绘制心形图

    今天七夕,正好看到高等数学的心形线,想到心形线的函数应该可以用R语言来绘制,就尝试了一下. 心形线的参数方程为: 其中r是半径,t为弧度. 有了参数方程之后,我们的作图就变得简单了,其基本思路是:首先 ...

  5. JAVA命令符找不到符号_[转]Java命令行编译文件时出现的错误,找不到符号或软件包不存在等...

    标签(空格分隔): Javajavascript 习惯了eclipse的自动编译,Java命令行编译.执行文件只会最基础的部分,就是对单文件的编译和执行,并且不包含任何外部JAR包.但有时候你还非得用 ...

  6. 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图

    [Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...

  7. python获取输入数字_python获取从命令行输入数字的方法

    本文实例讲述了python获取从命令行输入数字的方法.分享给大家供大家参考.具体如下: #---------------------------------------- # Name: numeri ...

  8. Java 命令行编译项目

    如果是用Exlipse, 第三方的包可以放在eclipse文件夹的jre包的lib文件夹中! (初学者的一些总结-高手们勿喷哈-) 原因: 以前一直用Eclispe编程环境运行Java.非常舒服,就像 ...

  9. java命令行参数工具_Java方法中的参数太多,第8部分:工具

    java命令行参数工具 在我的系列文章的前七篇文章中,有关处理Java方法中期望的参数过多的内容集中在减少方法或构造函数期望的参数数量的替代方法上. 在本系列的第八篇文章中,我将介绍一些工具,这些工具 ...

最新文章

  1. C# winform单元格的formatted值的类型错误 DataGridView中CheckBox列运行时候System.FormatException异常
  2. 在WPF应用程序中利用IEditableObject接口实现可撤销编辑的对象
  3. COOKIE格式与读写相关
  4. 修改Linux内核的printk缓冲区(log缓冲区)大小
  5. 企业分布式微服务云SpringCloud SpringBoot mybatis (十)Spring Boot多数据源配置与使用Spring-data-jpa支持...
  6. 【移植驱动到Linux3.4.2内核之一】移植DM9000C网卡驱动
  7. sqlserver 字符串转化数值函数_Excel常见函数用法(TEXT函数)
  8. 数据库系统实训——实验六——游标
  9. c语言除法加括号么,算不了除法,为什么?
  10. php 添加失败是什么原因,安装zblog提示“创建c_option.php失败”的原因和解决办法...
  11. WebDriver与浏览器版本对应关系
  12. 软件测试常见的开发模型
  13. 中国电影的网络付费点播发行:现状与展望
  14. Java EasyPoi简单报表+复合表头报表的导出
  15. 按键精灵2014如何插入循环语句--win10专业版
  16. 【运筹学】线性规划问题的解 ( 可行解 | 可行域 | 最优解 | 秩的概念 | 极大线性无关组 | 向量秩 | 矩阵秩 | 基 | 基变量 | 非基变量 | 基解 | 基可行解 | 可行基 )
  17. 这几个一键文字转语音的方法你可不能错过
  18. matlab中如何定义整形变量,MATLAB中定义变量的问题
  19. 全球及中国数字每周可编程时间开关行业研究及十四五规划分析报告
  20. 计算机组成原理【2】

热门文章

  1. java list for循环_Java List遍历的3种方法
  2. 怎样提高百度关键词排名,关键词排名优化方法
  3. 入职三个月后的一点感想
  4. 发现RTX腾讯通有个bug
  5. 微信小程序 各类效果(视频)
  6. 历年真题自考c语言,C 自考历年真题小集.docx
  7. 前端HTML--个人社保计算器
  8. 仿“饿了么”订餐app界面实现
  9. Netty:高性能之道
  10. 概率密度直方图(可看作PDF的在步长较大时的近似)与累积分布直方图(可看作CDF的在步长较大时的近似)