用java在画布上画心形线_Java画心形线
画出心形线,同时在左上角显示步长值和画图所用时间
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.Random;
import java.math.BigDecimal;
import static java.lang.Math.*;
public class Test{
long start = System.currentTimeMillis();
private Frame f = new Frame("心形线");
//画布大小
private final int SIZE=600;
//重写paint()
private MyCanvas area = new MyCanvas();
private BufferedImage image = new BufferedImage(SIZE,SIZE,BufferedImage.TYPE_INT_RGB);
private Graphics g = image.getGraphics();
//循环步长
private final double STEP = 0.00001;
private void init(){
area.setPreferredSize(new Dimension(SIZE,SIZE));
// 画白色背景
g.setColor(Color.white);
g.fillRect(0, 0, SIZE, SIZE);
// 画两条坐标轴
g.setColor(Color.black);
g.drawLine(0,SIZE/2,SIZE,SIZE/2);
g.drawLine(SIZE/2,0,SIZE/2,SIZE);
//计算坐标
//新坐标
int x1, y1,x2, y2;
for (double t = -Math.PI; t < Math.PI; t = t + STEP){
g.setColor(Color.black);
x1 = axisSystem(axisX(t));
y1 = axisSystem(axisY(t));
x2 = axisSystem(axisX(t+STEP));
y2 = axisSystem(axisY(t+STEP));
//原曲线是横向的,为求美观调整了输出把它画成纵向,若画其他函数须修改
//g.drawLine(x1, y1, x2, y2);
g.drawLine(y1, SIZE-x1, y2, SIZE-x2);
}
//关闭窗口
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
long end = System.currentTimeMillis();
g.setColor(Color.red);
g.setFont(new Font("Times", Font.BOLD,15));
g.drawString("步长值:" + BigDecimal.valueOf(STEP) , 20, 30);
g.drawString("画图所用时间:" + (end - start) + "毫秒", 20, 50);
area.repaint();
f.add(area);
f.pack();
f.setVisible(true);
}
//根据t算出对应的心形线新坐标X值,若画其他函数须修改
private double axisX(double t){
return 2*cos(t) - cos(2*t);
}
//根据t算出对应的心形线新坐标Y值,若画其他函数须修改
private double axisY(double t){
return 2*sin(t) - sin(2*t);
}
//把新坐标换算成系统坐标,若画其他函数须修改
private int axisSystem(double d){
return (int)((0.5+d/8)*SIZE);
}
private class MyCanvas extends Canvas{
public void paint(Graphics g){
g.drawImage(image, 0, 0, null);
}
}
public static void main(String[] args){
new Test().init();
}
}
用java在画布上画心形线_Java画心形线相关推荐
- java实现画布上画图
java实现画布上画图 package p4;import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics ...
- java 模拟post上传文件_Java模拟post请求上传文件
Java代码实现 /** * 模拟文件post上传 * @param urlStr(接口地址) * @param formName(接口file接收名) * @param fileName(需要上传文 ...
- java 模拟post上传文件_JAVA模拟HTTP post请求上传文件
在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较 ...
- java cpu利用率上不去_Java 面试突击之 Java 并发知识基础 amp; 进阶考点全解析
版权说明:本文转自知乎用户木子超,已获其许可,附上其文章主页链接 知乎用户 一.基础 什么是线程和进程? 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个 ...
- java http post上传文件_Java通过HTTP POST请求上传文件
我想创建一个Java应用程序来执行以下在Windows上的CURL中工作.Java通过HTTP POST请求上传文件 curl -x XXX.XXX.XXX.XXX:8080 -X POST --da ...
- java 滚轮页面缩放_急..JAVA 在画布上画拖动滚动条可扩大缩小的长方形
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 貌似题目要求是 Appliction 不是 Applet 哦 改成这样: import java.awt.event.*; import java.awt ...
- java oss 断点上传文件_java实现oss断点续传
bucketName ---oss上bucket的名字 key ---文件所在的文件夹加文件名 例如:我想把ceshi.txt 存放在bucket叫aa的里面叫bb的文件夹下.那么我的bucketNa ...
- Java代码服务器上下载图片_Java如何从服务器中下载图片
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net ...
- java在画布上画出变量_急..JAVA 在画布上画拖动滚动条可扩大缩小的长方形
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 貌似题目要求是 Appliction 不是 Applet 哦 改成这样: import java.awt.event.*; import java.awt ...
最新文章
- predict_proba is not available when probability=False
- 字符串-拆分和拼接字符串
- pat 乙级 1026 程序运行时间(C++)
- 给vmware虚拟机中的ubuntu 14.04扩大磁盘分区
- C/C++ OpenCV图像的载入,显示,输出
- PyTorch:Faster-RCNN
- C++:求n以内被3除余余1的所有整数
- 阿里之后 “安卓终结者”来了!
- JSK-12 最后一个单词的长度【入门】
- GRE Tunnel实现企业网中的***
- Java中的【锁】事 - 极客大学架构师训练营 架构师 Albert 分享
- Web接入QQ登陆简单入门操作
- Cron每年1月5号 4月5号 7月5号 10月5号 00:00:00执行任务
- 腾讯qq等级计算公式面试题
- 生活照的尺寸是多少?如何将照片裁剪为生活照?
- 2014新浪校招笔试题:取水果(17年第一篇让人懵逼的面试题)
- 网易校招编程题目之牛牛分苹果
- 用Cufflinks计算差异表达
- 【堆】 大根堆和小根堆的建立
- Matrix Hub 矩阵运算库 C语言