有位小伙伴说,看到一个帖子,一个计算机博士接亲时,要求现场写代码,5分钟做出一个爱心。我们就看看如何用java设计出心形的代码。

我找了一下,发现方法竟然很多,我们就来见识一下,最后我们看一下如何用简单的java代码实现一个心。

一.❤️的数学背景

据说,心形线起源于法国的笛卡尔,他曾认识一位瑞典小公国的公主克里斯汀,并成为了公主的数学老师,并渐渐产生爱慕之心,但是被国王阻止了(想象一段狗血的剧情)。笛卡尔被迫流放回法国,对公主日夜思念便写信,但是又怕被人看到,于是就想到了用数学公式画心形线来表白心迹。

笛卡尔的心形线是这样的:

这个心有点肥是不?看一个更广为流传的:

在坐标系中画出来是这样的:

想要个更苗条的是不:

还想要个实心的是不:

如果想要更好看的,就需要matlab等工具进行渲染了

二.java 实现❤️

首先来一个7行就能搞定的:

    public  static  void heart1(){float x,y,a;for(y=1.3f;y>-1.1f;y-=0.06f){   //这里的参数皆可以调,条件就是看着顺眼for(x=-1.2f;x<=1.2f;x+=0.025f){a=x*x+y*y-1;System.out.print(a*a*a-x*x*y*y*y<=0.0f?' ':'$');}System.out.println();}}

画出来的结果是这样的:

再来一个心中有无数爱的:

public static  void heart2(){double x,y,a;char s[]=new char[]{'I',' ','l','o','v','e',' ','y','o','u','!'};int index=0;for(y=1.3f;y>-1.1f;y-=0.06f){index=0;for(x=-1.1f;x<=1.1f;x+=0.025f){double result=x*x+pow((5.0*y/4.0-sqrt(abs(x))),2);if(result<=1){System.out.print((s[index]));index=(index+1)%11;}else{System.out.print(' ');}}System.out.println(" ");}}

执行之后是这样的:

怎么样,是不是程序员的专属浪漫?

三.一个双心的例子

有个小伙伴给贡献了一段代码,效果是这样的:

代码如下:

import javax.swing.*;
import java.awt.*;
import static java.lang.Math.abs;
import static java.lang.Math.sqrt;
import static java.lang.Math.pow;
​
import static java.lang.Math.*;
​
public class DemoTest extends JFrame {private static final long serialVersionUID = -1284128891908775645L;
​// 定义加载窗口大小
​public static final int GAME_WIDTH = 500;
​public static final int GAME_HEIGHT = 500;// 获取屏幕窗口大小public static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;
​public static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;
​public DemoTest() {
​// 设置窗口标题this.setTitle("心形曲线");// 设置窗口初始位置this.setLocation((WIDTH - GAME_WIDTH) / 2, (HEIGHT - GAME_HEIGHT) / 2);// 设置窗口大小this.setSize(GAME_WIDTH, GAME_HEIGHT);// 设置背景色this.setBackground(Color.BLACK);// 设置窗口关闭方式this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗口显示this.setVisible(true);}
​@Overridepublic void paint(Graphics g) {double x, y, r;Image OffScreen = createImage(GAME_WIDTH, GAME_HEIGHT);Graphics drawOffScreen = OffScreen.getGraphics();for (int i = 0; i < 90; i++) {for (int j = 0; j < 90; j++) {r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 18;x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + GAME_WIDTH / 2;y = -r * Math.sin(Math.PI / 45 * j) + GAME_HEIGHT / 4;//设置画笔颜色drawOffScreen.setColor(Color.PINK);// 绘制椭圆drawOffScreen.fillOval((int) x, (int) y, 2, 2);}// 生成图片g.drawImage(OffScreen, 0, 0, this);}}
​public static void main(String[] args) {DemoTest demo = new DemoTest();demo.setVisible(true);}
​
}

程序员专属浪漫:如何用java代码画❤️相关推荐

  1. 程序员的浪漫:三十行代码实现用她的名字作幅画

    程序员的浪漫:三十行代码实现用她的名字作幅画 hello,各位小伙伴们大家好,看这篇文章的有很多新的朋友,有估计有不少的老朋友,首先做个自我介绍,我是一灰灰,码农界的资深搬运工:今天呢,没有站在我身边 ...

  2. python程序员的浪漫-千行生日祝福代码

    python程序员的浪漫-千行生日祝福代码

  3. 程序员专属浪漫快拿去哄npy吧

    文章目录 一.前端程序员的浪漫 第一个:loving 第二个:kevinlu98/love 第三个:Axehco/LoveDemo 第四个:phodal/valentine 第五个:JohnLee99 ...

  4. java 代码重用需要注意的事项_程序员笔记|编写高性能的Java代码需要注意的4个问题...

    一.并发 无法创建新的本机线程...... 问题1:Java的中创建一个线程消耗多少内存? 每个线程有独自的栈内存,共享堆内存 问题2:一台机器可以创建多少线程? CPU,内存,操作系统,JVM,应用 ...

  5. java语言情话_程序员的浪漫:用 java 实现每天给对象法发情话

    一.引言 最近看到一篇用js代码实现表白的文章,深有感触. 然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞 实现思路: 使用HttpClient远程获取彩虹屁 ...

  6. Java说情话_程序员的浪漫:用 java 实现每天给对象法发情话

    一.引言 最近看到一篇用js代码实现表白的文章,深有感触. 然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞 实现思路: 使用HttpClient远程获取彩虹屁 ...

  7. 用Java写句情话_程序员的浪漫:用 java 实现每天给对象法发情话

    一.引言 最近看到一篇用js代码实现表白的文章,深有感触. 然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞 实现思路: 使用HttpClient远程获取彩虹屁 ...

  8. java 浪漫_程序员的浪漫:用 java 实现每天给对象法发情话

    一.引言 最近看到一篇用js代码实现表白的文章,深有感触. 然后发现自己也可以用java代码实现,然后就开始写代码了,发现还挺有意思的,话不多说开搞 实现思路: 使用HttpClient远程获取彩虹屁 ...

  9. java程序员的浪漫代码_专属于程序员的浪漫-Java输出动态闪图iloveyou

    代码测试可用,运行结果非常辣眼睛,有种二十一世纪初流行于广大中小学生之间的失落非主流的感觉! 还是比较有参考价值的,获取当前日期时间,日期类格式化,图形界面的开发等. java awt实现小程序动态闪 ...

  10. i love java怎么写编程_专属于程序员的浪漫-Java输出动态闪图iloveyou

    代码测试可用使用的,运行结果非常辣眼睛,有种二十一世纪初流行于广大中小学生之间的失落非主流的感觉! 还是比较有参考网上卖的,获取当前日期时间,日期类格式化,图形界面的开发等. java awt实现小程 ...

最新文章

  1. 用thttpd做Web Server
  2. kubernetes API Server 权限管理实践
  3. 【LeetCode】53.最大子序和
  4. 数据迁移工具Sqoop和DataX功能比较
  5. Mac OS 如何更改文件的默认打开方式
  6. PCalc for Mac(科学计算器)
  7. vivo S12 PRO怎么解锁vivoS12解锁平台刷机教程屏幕锁激活手机锁不记得了可以用这个方法教程刷机解锁用的
  8. 闲置路由器做无线打印服务器
  9. MLX90614修改地址
  10. mkdir: Call From lzh/192.168.66.150 to localhost:9000 failed on connection exception:
  11. 服务条目与采购订单、采购申请、工单、项目及WBS的关系
  12. nvidia显卡驱动、cuda、cudnn、tensorflow对应版本
  13. d盘莫名其妙被占空间 win10_Win10系统C盘空间突然爆满的解决方法
  14. 延时100ms c语言程序,C51单片机延时时间的计算方法解析
  15. 基于PaddleOCR银行卡识别实现(二)
  16. 【Java基础】集合总结(三)——Queue集合、Map集合
  17. 【JS动画基础】 闪动,匀速,缓动。
  18. pythond的执行原理_深入理解Python 关于supper 的 用法和原理
  19. Android JSONObject把URL转义了
  20. Ultraedit使用小技巧

热门文章

  1. web工程was部署
  2. 【C语言】08-数组
  3. spring用的是哪种工厂模式_业务复杂就用 ifelse?刚来的技术大佬用这招彻底干掉了!...
  4. Debugging a Create React App with VS Code
  5. DPDK - Symmetric Receive-side Scaling
  6. HTML + CSS + JS知识点复习(第一次)
  7. f3 fatfree小型php,F3-fatfree小型php框架教程(三)
  8. mysql 事务不生效_@Transactional事务不生效的几种解决方案
  9. java接口 抽象类_关于JAVA接口和抽象类
  10. 创设Excel服务失败