Java跳动爱心代码
1.计算爱心曲线上的点的公式
计算爱心曲线上的点的公式通常基于参数方程。以下是两种常见的参数方程表示方法,用于绘制爱心曲线:
1.1基于 (x, y) 坐标的参数方程
-
x = a * (2 * cos(θ) - sin(θ))^3
-
y = a * (2 * sin(θ) - cos(θ))^3
其中,a 是一个常数,用于控制爱心的大小;θ 是参数,从 0 到 2π 取值。这个公式通过改变 θ 的值,可以计算出爱心曲线上不同位置的点 (x, y)。
1.2基于三角函数组合的参数方程
-
x = 16 * sin^3(t)
-
y = 13 * cos(t) - 5 * cos(2t) - 2 * cos(3t) - cos(4t)
其中,t 是参数,同样用于计算爱心曲线上不同位置的点 (x, y)。这个公式通过正弦和余弦函数的组合来绘制爱心形状。通过改变 t 的取值范围,可以调整爱心的大小和形状。
1.3归纳
-
无论是哪种参数方程,都是通过改变参数(θ 或 t)的取值来遍历爱心曲线上的点。
-
a 常数用于控制爱心的大小。
-
这些参数方程可以在 Java Swing 或其他图形库中使用,通过绘制一系列的点来模拟连续的爱心曲线。
-
我们可以根据实际需要选择适合的参数方程,并调整参数以得到期望的爱心形状和大小。
2. Java跳动爱心代码的实现
在Java中创建一个简单的控制台应用来显示跳动的爱心通常涉及到使用ASCII字符来绘制爱心,并使用循环和延迟来模拟跳动的效果。以下是一个简单的示例代码,它使用System.out.print和Thread.sleep来在控制台中打印并更新跳动的爱心图案。
在这个实例中,我们使用一个简单的ASCII爱心图案,并通过在其旁边添加一些空格来模拟跳动的效果。
public class BouncingHeart { private static final String HEART = "♥"; // 使用Unicode爱心字符 private static final int MAX_WIDTH = 80; // 控制台的最大宽度,用于确定爱心的位置 private static int currentPosition = 0; // 当前爱心的位置 public static void main(String[] args) { try { while (true) { // 无限循环来模拟跳动 clearConsole(); // 清除控制台内容(在某些系统中可能不支持) drawHeart(); // 绘制爱心 Thread.sleep(200); // 等待一段时间以模拟跳动效果 currentPosition = (currentPosition + 1) % MAX_WIDTH; // 更新位置 } } catch (InterruptedException e) { e.printStackTrace(); } } private static void drawHeart() { // 在当前位置打印爱心,其余位置用空格填充 for (int i = 0; i < MAX_WIDTH; i++) { if (i == currentPosition) { System.out.print(HEART); } else { System.out.print(" "); } } System.out.println(); // 换行以开始新的一行 } // 清除控制台内容的方法(注意:这在某些操作系统或IDE中可能不起作用) private static void clearConsole() { final String os = System.getProperty("os.name"); try { final String command; if (os.contains("Windows")) { command = "cls"; } else { command = "clear"; } final Process process = Runtime.getRuntime().exec(new String[]{command}); // 等待命令执行完成 process.waitFor(); } catch (final Exception e) { e.printStackTrace(); } }
}
重要说明:
(1)控制台清除:clearConsole()方法试图清除控制台的内容,但这在某些操作系统或IDE(如IntelliJ IDEA或Eclipse的控制台视图)中可能不起作用。在某些情况下,我们可能需要关闭并重新打开控制台窗口或使用外部工具(如PowerShell、Terminal等)来查看效果。
(2)Unicode字符:在上面的代码中,我使用了Unicode的爱心字符♥。如果我们的控制台或IDE不支持此字符,我们可能需要将其替换为其他ASCII字符或图案。
(3)无限循环:main方法中的while(true)循环是一个无限循环,用于持续模拟跳动效果。我们可以通过中断程序(如使用Ctrl+C)来停止它。
(3)延迟和跳动:通过Thread.sleep(200);,我们在每次打印之间等待200毫秒来模拟跳动效果。我们可以根据需要调整此值。
(4)位置更新:currentPosition变量用于跟踪爱心在控制台中的当前位置。每次循环时,我们都会更新此位置以模拟跳动效果。
3.如何在Java中绘制爱心图片
在Java中绘制一个完整的爱心图片,我们通常不会使用控制台输出ASCII字符,而是使用图形用户界面(GUI)库,如Java Swing或JavaFX。以下是一个使用Java Swing绘制爱心图片的简单示例:
首先,我们需要一个方法来计算爱心曲线上的点。这里我们使用参数方程来定义爱心的形状。然后,我们使用java.awt.Graphics或java.awt.Graphics2D来绘制这些点。
import javax.swing.*;
import java.awt.*; public class HeartDrawer extends JPanel { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; // 设置抗锯齿以改善图形质量 g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); int centerX = getWidth() / 2; int centerY = getHeight() / 2; int size = Math.min(centerX, centerY) - 50; // 根据窗口大小调整爱心大小 // 绘制爱心 drawHeart(g2d, centerX, centerY, size); } private void drawHeart(Graphics2D g2d, int centerX, int centerY, int size) { int x = 0, y = -size; float t; for (t = 0.0f; t <= 2 * Math.PI; t += 0.01f) { x = (int) (size * (16 * Math.pow(Math.sin(t), 3))); y = (int) (-size * (13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t))); // 将心形居中并适应窗口大小 x += centerX; y += centerY; // 如果点在窗口内,则绘制它 if (x > 0 && x < getWidth() && y > 0 && y < getHeight()) { g2d.fillOval(x, y, 2, 2); // 使用小圆点来绘制爱心,以模拟线条 } } } public static void main(String[] args) { JFrame frame = new JFrame("Heart Drawer"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 400); // 设置窗口大小 frame.add(new HeartDrawer()); frame.setVisible(true); }
}
在这个示例中,HeartDrawer类继承自JPanel,并重写了paintComponent方法来绘制爱心。我们使用参数方程来计算爱心上的点,并用小圆点(通过fillOval方法)来绘制它们,以模拟线条。我们可以通过调整参数方程的参数和循环的步长来改变爱心的形状和精度。
运行这个程序将打开一个窗口,并在其中绘制一个爱心。注意,由于我们使用了小圆点来绘制线条,所以爱心看起来可能像是由点组成的,而不是连续的线条。我们可以通过增加每个点的大小或改变绘制方法来改善这一点。
相关文章:
Java跳动爱心代码
1.计算爱心曲线上的点的公式 计算爱心曲线上的点的公式通常基于参数方程。以下是两种常见的参数方程表示方法,用于绘制爱心曲线: 1.1基于 (x, y) 坐标的参数方程 x a * (2 * cos(θ) - sin(θ))^3 y a * (2 * sin(θ) - cos(θ))^3 其中ÿ…...
Swift Combine — Operators(常用Filtering类操作符介绍)
目录 filter(_: )tryFilter(_: )compactMap(_: )tryCompactMap(_: )removeDuplicates()first(where:)last(where:) Combine中对 Publisher的值进行操作的方法称为 Operator(操作符)。 Combine中的 Operator通常会生成一个 Publisher,该 …...
Windows11+CUDA12.0+RTX4090如何配置安装Tensorflow2-GPU环境?
1 引言 电脑配置 Windows 11 cuda 12.0 RTX4090 由于tensorflow2官网已经不支持cuda11以上的版本了,配置cuda和tensorflow可以通过以下步骤配置实现。 2 步骤 (1)创建conda环境并安装cuda和cudnn,以及安装tensorflow2.10 con…...
韩顺平0基础学Java——第27天
p548-568 明天开始坦克大战 Entry 昨天没搞明白的Map、Entry、EntrySet://GPT教的 Map 和 Entry 的关系 1.Map 接口:它定义了一些方法来操作键值对集合。常用的实现类有 HashMap、TreeMap 等。 2. Entry接口:Entry 是 Map 接口的一个嵌…...
YesPMP探索Python在生活中的应用,助力提升开发效率
Python是一种简单易学、高效强大的编程语言,正变成越来越多人选择的热门技能。学习Python不仅可以提供更多就业机会,还能让自己在职场更加有竞争力,那可以去哪里拓展自己的技能呢? YesPMP平台 为熟练掌握Python语言的程序员提供了…...
TikTok账号运营:静态住宅IP为什么可以防封?
静态住宅IP代理服务是一种提供稳定、静态IP地址并可隐藏用户真实IP地址的网络代理服务。此类代理服务通常使用高速光纤网络来提供稳定、高速的互联网体验。与动态IP代理相比,静态住宅IP代理的IP地址更稳定,被封的可能性更小,因此更受用户欢迎…...
linux系统宝塔服务器temp文件夹里总是被上传病毒php脚本
目录 简介 上传过程 修复上传漏洞 tmp文件夹总是被上传病毒文件如下图: 简介 服务器时不时的会发送短信说你服务器有病毒, 找到了这个tmp文件, 删除了之后又有了。 确实是有很多人就这么无聊, 每天都攻击你的服务器。 找了很久的原因, 网上也提供了一大堆方法,…...
HTML+CSS+PHP实现网页留言板功能(需要创建数据库)
话说前头,我这方面很菜滴。这是我网页作业的一部分。 1.body部分效果展示(不包括footer) 2、代码 2.1 leaving.php(看到的网页) <!DOCTYPE html> <html lang"en"> <head> <met…...
【谷歌】实用的搜索技巧
1、使用正确的谷歌网址 我们知道https://www.google.com是谷歌的网址。但根据国家,用户可能会被重定向到 google.fr(法国)或google.co.in(印度)。 最主要的URL——google.com是为美国用户准备的(或是针对全世界所有用户的唯一URL))。当你在谷歌上搜索时,了解这一点是相…...
打造完美启动页:关键策略与设计技巧
启动页(Splash Screen)设计是指在应用程序启动时,首先展示给用户的界面设计。这个界面通常在应用加载或初始化期间显示,其主要目的是为用户提供一个视觉缓冲,展示品牌标识,并减少用户在等待过程中的焦虑感。…...
电子书(chm)-加载JS--CS上线
免责声明: 本文仅做技术交流与学习... 目录 cs--web投递 html(js)代码 html生成chm工具--EasyCHM 1-选择powershell 模式 生成 2-选择bitsadmin模式生成 chm反编译成html cs--web投递 cs配置监听器--->攻击---->web投递---> 端口选择没占用的, URL路径到时候会在…...
理解HTTP请求格式
HTTP概念 HTTP全称HyperTextTransfer Protocol(超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议;HTTP是一个客户端(用户)和服务端(网站)之间请求和响应的标准。 HTTP 协议是以 ASCII 码传输&…...
差分数组汇总
本文涉及知识点 算法与数据结构汇总 差分数组 令 a[i] ∑ j : 0 i v D i f f [ i ] \sum_{j:0}^{i}vDiff[i] ∑j:0ivDiff[i] 如果 vDiff[i1],则a[i1…]全部 如果vDiff[i2]–,则a[i2…]全部–。 令11 < i2 ,则: { a [ i ] 不变&…...
SpringBoot | 实现邮件发送
运行环境: IntelliJ IDEA 2022.2.5 (Ultimate Edition) (注意:idea必须在2021版本以上)JDK17 项目目录: 该项目分为pojo,service,controller,utils四个部分, 在pojo层里面写实体内容(发邮件需要的发件人邮…...
spring boot接入nacos 配置中心
再接入nacos配置中心时,需要确认几点: 1. spring boot 版本 (spring boot 2.x ) 2. nacos 配置中心 服务端 版本 (1.1.4) 3. nacos client 客户端版本 (1.1.4) 方式一 1. 启动 nacos 服务端,这里不做解释 在配置中心中加入几个配置 2. 在…...
产品应用 | 小盒子跑大模型!英码科技基于算能BM1684X平台实现大模型私有化部署
当前,在人工智能领域,大模型在丰富人工智能应用场景中扮演着重要的角色,经过不断的探索,大模型进入到落地的阶段。而大模型在落地过程中面临两大关键难题:对庞大计算资源的需求和对数据隐私与安全的考量。为应对这些挑…...
uniapp中u-input点击事件失效
当给u-input设置了disabled/readonly属性后,pc浏览器中点击事件失效,但是app/移动端h5中却仍有效 解决办法 给外边包上一个盒子设置点击事件,给input加上css属性:pointer-events:none pointer-events CSS 属性指定在什…...
[机器学习] 监督学习和无监督学习
监督学习和无监督学习是机器学习的两种主要方法,它们之间有几个关键区别: 1. 定义 监督学习(Supervised Learning): 使用带标签的数据进行训练。数据集包括输入特征和对应的输出标签。目标是学习从输入特征到输出标签…...
使用Python进行自然语言处理:从基础到实战
使用Python进行自然语言处理:从基础到实战 自然语言处理(Natural Language Processing, NLP)是人工智能的重要领域,旨在处理和分析自然语言数据。Python凭借其丰富的库和社区支持,成为NLP的首选编程语言。本文将介绍自然语言处理的基础概念、常用的Python库以及一个实战项…...
Hadoop面试题总结
一 、介绍一下hadoop 综述:hadoop是一个适合海量数据的分布式存储和分布式计算的平台 分述:hadoop包含三大组件,分别是HDFS、MapReduce和YARN --HDFS(分布式文件系统) HDFS集群由NameNode,DataNode,SecondaryNameNode构成NameNode:主要负责接受用户请求…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
