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

编程知识 更新时间:2023-04-07 06:20:08

有位小伙伴说,看到一个帖子,一个计算机博士接亲时,要求现场写代码,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);
    }
​
    @Override
    public 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代码画❤️

本文发布于:2023-04-07 06:20:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/72f6832217a9d04c28e9b12812d51e6c.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何用   程序员   代码   浪漫   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 52498文章数
  • 14阅读数
  • 0评论数