心形线(Java语言实现) 原理与具体实现
说明:本文章无法与专业人士的专业文章或Paper相提并论,只是个人对这方面内容的一点点理解,由于本人的技术水平原因,文中难免有不妥之处,恳请批评指正!谢谢。
1.何为心形线?
心形线,
是一个圆上的固定一点在它(固定一点)绕着与其相切且半径相同的另外一个圆周滚动时
所形成的轨迹,因其形状像心形而得名。 【过程如下图所示】
2.心形线(心脏线)方程(略讲)
2.1 极坐标方程
2.2 直角坐标方程
2.3 参数方程
略(参考圆和椭圆的参数方程加以转化就可得到心形线的参数方程,此处不赘述)
3.Java实现画多心形状
3.1 如何画?
重写paint方法,通过给心形线的方程赋特定的值,即可画出单个心形线。要想实现立体效果,可以考虑错落有致地画几个大小不一的心形线再加上大小不一椭圆的合理排布,就可实现立体的效果了。(如下图)
3.2 代码
import javax.swing.*;
import java.awt.*;public class HeartQX extends JFrame {//定义窗口大小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 HeartQX(){//设置窗口标题this.setTitle("心形曲线 2022.6.6");//设置窗口的初始位置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);}public void paint(Graphics graphics){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);drawOffScreen.fillRect((int) x, (int) y, 1, 1);}//生成图片graphics.drawImage(OffScreen, 0, 0, this);}}public static void main(String[] args) {HeartQX heartQX = new HeartQX();heartQX.setVisible(true);}}
END
心形线(Java语言实现) 原理与具体实现相关推荐
- 2.Java语言跨平台原理?
2.Java语言跨平台原理? 理解 为主 Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行 ...
- 【JAVA】Java概述(1、Java语言发展史;2、Java语言跨平台原理;3、JRE和JDK;4、JDK的下载与安装)
Java概述 重新学习Java第一篇 文章目录 Java概述 1.JAVA语言发展史 1.1Java语言 1.2Java语言发展史 2.Java语言跨平台原理 2.1平台 2.2跨平台 2.3跨平台原 ...
- java语言 编译原理_【Java学习】深入分析Java的编译原理
在<Java代码的编译与反编译>中,有过关于Java语言的编译和反编译的介绍.我们可以通过javac命令将Java程序的源代码编译成Java字节码,即我们常说的class文件.这是我们通常 ...
- 心形线c语言原理,C语言打印心形(示例代码)
#include int main() { for (float y = 1.5f; y > -1.5f; y -= 0.1f) { for (float x = -1.5f; x < 1 ...
- JavaSE——Day1——计算机基础知识、Java语言基础、JRE与JDK
计算机基础知识 什么是计算机? 计算机全称:电子计算机,俗称电脑.是一种能够按照程序原乡,自动.告诉处理海量数据的现代化只能电子设备.计算机由软件和硬件组成,没有安装任何软件的计算机称为课机.常见的形 ...
- Java语言简介和基础
JAVA简介 1.Java语言发展史 2.Java语言跨平台原理 Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚 拟机(J ...
- JAVA语言的由来以及相关情况介绍
小编自述: (最近有好多事需要处理,就比如咱心心念念的四级!导致小编近一段时间都没写博客!!!!主要原因还是小编不够自律吧!为了防止小编忘掉之前学的,于是又从头开始再学一遍!!!!所以友友们不要轻易放 ...
- Java 基础学习-Java语言概述
Java 基础学习 第一章 Java语言概述 回顾java基础知识,进行整理记录. 文章目录 Java 基础学习 前言 一. Java语言发展史(了解) 二.Java语言跨平台原理(理解) 三.JRE ...
- day01计算机基础知识Java语言基础
计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...
- Java0基础学习笔记、心得-day01(Java入门需知、Java入门概述、Java语言相关知识、JDK与JRE关系,常用DOS命令、JDK的下载安装与HelloWorld案例实现与常见问题。)
一.Java入门需知 * 1.你为什么要学习编程?--兴趣.职业.薪资? * 2.具体Java开发岗位薪资可以参考-智联招聘 前程无忧 BOSS直聘等APP * 3.如何进入IT行业:前端工程师 ...
最新文章
- nginx+iis实现负载均衡
- systemd下supervisord服务开机自启动以及注意事项
- Keepalived配置日志文件
- java 大小相间排序_ArrayList实现根据某属性大小相间排序
- 【Gym - 101612C】【2017-2018NEERC】Consonant Fencity(状压枚举,预处理)
- 使用KNN时出现非数值属性和缺失值
- html边框大一点,CSS3 框大小(box-sizing)
- mysql left join 中文_MySQL之LEFT JOIN问题汇总
- php/eq,thinkphp中eq标签的使用
- iphone7p配置参数详情_华为mate40标准版参数配置-参数详情
- Go语言学习笔记(8)——包和结构体
- oracle滚动统计,sql – 按月滚动或运行Oracle总计
- 局域网传输文件_如何“互传文件”?简单几步,方便快捷
- Ubuntu18.04安装COMSOL 5.3a
- 电子科技大学《图论及其应用》复习(史上最全汇总)
- MFC隐藏任务栏图标
- 笔记:《高效能人士的七个习惯》第九章 习惯六 统合综效——创造性合作的原则
- firefly-rk3288开发板Linux驱动——LED驱动
- Pycharm远程连接服务器来跑代码
- thinkphp5如何对接使用阿里云短信
热门文章
- 3D建模技巧:如果想用好ZBrush,必须知道这10点!
- JSR303注解字段校验
- python3还会有中文输出乱码问题?!!
- NOIP2017提高组模拟赛4 (总结)
- vue-cli脚手架卡在 ‘98%’ after emitting CopyPlugin 报错,无法运行
- 1328C Ternary XOR
- 用shell打印正三角形_用shell命令绘制三角形
- 80后冲入“剩女”阵营
- torchaudio::is_sox_available关于使用pyinstaller 编译的问题
- css 实现三维立体旋转效果