【Java】画心形图形

server/2024/10/15 20:20:17/

开始看到的是这个爱心图形,挺好看的(感谢这些前端巨佬): 

HTML流光爱心_爱心代码html-CSDN博客

本来想着自己看下这个源代码能不能实现,看了下源代码其实非常复杂。

在看代码的过程中发现,源代码里边给出了爱心坐标点x,y变化的函数所在的网址:

Heart Curve -- from Wolfram MathWorld

其中不同的爱心坐标点x,y变化的函数不太一样(感谢这些数学大佬):

 感觉第二排最右边这个好看,来实现一下,并且还有对应的坐标方程式,那这就简单多了,直接转化为Java代码:

java">x = 16 * Math.sin(t) * Math.sin(t) * Math.sin(t);
y = 13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t);

这里需要注意,在实现的时候,需要把x,y坐标倍数放大些,并且需要把x,y的坐标平移下,运行结果:

Java源代码:

java">import javax.swing.*;
import java.awt.*;public class Heart extends JFrame {Graphics graphics; //画笔double x;double y;double t=0;Heart() {setLayout(null); //关闭窗口布局管理器setSize(700, 1000); //设置窗口大小setLocationRelativeTo(null); //窗口显示在屏幕中间。setVisible(true); //显示窗口graphics = getContentPane().getGraphics(); //初始化画笔graphics.setFont(new Font("", Font.BOLD, 18)); //设置画画的字符大小}public void updateWindow(){//https://mathworld.wolfram.com/HeartCurve.htmlx = 16 * Math.pow(Math.sin(t), 3);y = 13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t);x *= 10;y *= 10;y += 400;x += 200;graphics.drawString("o", (int )x, (int )y);t += 0.001;}public static void main(String[] args) {Heart heart = new Heart();while (true) {heart.updateWindow(); //更新窗口}}
}


http://www.ppmy.cn/server/132351.html

相关文章

[NGINX]配置转发,unknown directive “stream“ in /etc/nginx/nginx.conf:33

背景:nginx需要配置一个代理转发,比如接收到6379端口之后,转发到其他url。这种情况比较适用于,办公室研发需要连接redis,但是redis的网络没有公网端口,需要配置一个nginx接受公网流量,转发redis…

Flutter-->Namespace not specified.

更新Android gradle 7.5.0之后, 运行项目会出现Namespace not specified.问题, 这里出一个我的解决方案. 由于很多库都不可能及时更新适配gradle 7.5.0, 所以可以等pub get将子库拉取到本地之后, 在本地手动添加namespace属性,即可解决本文问题. 作为程序猿,那肯定不可能手动修…

Oracle中处理空值函数(NVL、NVL2、NULLIF等)详解

文章目录 前言一、函数语法NVL函数NVL2函数NULLIF函数COALESCE函数DECODE函数 二、用法区别三、测试用例总结 前言 本文将介绍Oracle中处理空值的函数。常用的处理函数有:NVL()、NVL2()、NULLIF()、COALESCE()。此外DECODE()和CASE()函数也可以起到处理空值的效果。…

python爬虫题目

网站 https://project-iprj6705f17ebcfad66461658c5c-8000.preview.node01.inscode.run/ 第一道题爬取api并且保存 import requests,re import json url "https://project-iprj6705f17ebcfad66461658c5c-8000.preview.node01.inscode.run/tasks/api/" headers {us…

Redis存储时key的设置

固定值(Static Keys) 固定值的键通常用于存储那些在整个应用程序运行周期内相对不变的信息,或者是那些需要长期保存的数据。这些键通常不会因为不同的请求或用户而改变,而是代表了一种全局或静态的状态。例如: 全局配…

【计算机网络】Tcp/IP五层协议,Udp报文组成,Udp与Tcp的区别

Tcp/IP五层协议 TCP/IP模型是计算机网络的核心协议之一,通常被分为五层,每一层都有其独特的功能和作用。以下是TCP/IP模型的五层协议的简要描述: 物理层:这一层涉及实际的物理连接,定义了硬件传输介质的特性&#xff…

利用Open3D GUI开发一款点云标注工具问题总结(一)

前言 需求:利用Open3D 开发一款用于点云标注的工具,即按照点云类别赋予不同颜色 实现效果如下:通过点击颜色面板的不同颜色可以进行颜色切换,在我们选择两个点后,点击Create Box可以创建一个轴对称框体,从…

web 0基础第二节 列表标签

1.有序列表 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>有序列表 比较重要</title>…