Java画心形线
来源:互联网 发布:韩语歌音译软件 编辑:程序博客网 时间:2024/06/05 09:20
画出心形线,同时在左上角显示步长值和画图所用时间
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();}}
0 0
- Java画心形线
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java
- java
- java
- java
- JAVA?
- อยากจะร่ำรวยเล่น แทงบอลออนไลน์
- [leetcode] Linked List Cycle
- 关键路径问题
- Web测试工具 http_load 一个httpd 压力测试工具
- FPGA入门了解
- Java画心形线
- Quaternion.Euler(0, 90, 0)*Vector3(0.0, 0.0, -10)
- 《unix高级环境编程》线程控制——线程和 fork
- dispatch_once 单例模式
- 如何设计屏幕底部菜单
- iOS协议
- 你当真(是时候抛弃Eclipse转向IntelliJ了)
- netperf 网络性能测量
- ADB端口被占用