画出心形线,同时在左上角显示步长值和画图所用时间

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画心形线相关推荐

  1. java实现画布上画图

    java实现画布上画图 package p4;import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics ...

  2. java 模拟post上传文件_Java模拟post请求上传文件

    Java代码实现 /** * 模拟文件post上传 * @param urlStr(接口地址) * @param formName(接口file接收名) * @param fileName(需要上传文 ...

  3. java 模拟post上传文件_JAVA模拟HTTP post请求上传文件

    在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较 ...

  4. java cpu利用率上不去_Java 面试突击之 Java 并发知识基础 amp; 进阶考点全解析

    版权说明:本文转自知乎用户木子超,已获其许可,附上其文章主页链接 知乎用户 一.基础 什么是线程和进程? 何为进程? 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的.系统运行一个 ...

  5. java http post上传文件_Java通过HTTP POST请求上传文件

    我想创建一个Java应用程序来执行以下在Windows上的CURL中工作.Java通过HTTP POST请求上传文件 curl -x XXX.XXX.XXX.XXX:8080 -X POST --da ...

  6. java 滚轮页面缩放_急..JAVA 在画布上画拖动滚动条可扩大缩小的长方形

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 貌似题目要求是 Appliction 不是 Applet 哦 改成这样: import java.awt.event.*; import java.awt ...

  7. java oss 断点上传文件_java实现oss断点续传

    bucketName ---oss上bucket的名字 key ---文件所在的文件夹加文件名 例如:我想把ceshi.txt 存放在bucket叫aa的里面叫bb的文件夹下.那么我的bucketNa ...

  8. Java代码服务器上下载图片_Java如何从服务器中下载图片

    import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net ...

  9. java在画布上画出变量_急..JAVA 在画布上画拖动滚动条可扩大缩小的长方形

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 貌似题目要求是 Appliction 不是 Applet 哦 改成这样: import java.awt.event.*; import java.awt ...

最新文章

  1. predict_proba is not available when probability=False
  2. 字符串-拆分和拼接字符串
  3. pat 乙级 1026 程序运行时间(C++)
  4. 给vmware虚拟机中的ubuntu 14.04扩大磁盘分区
  5. C/C++ OpenCV图像的载入,显示,输出
  6. PyTorch:Faster-RCNN
  7. C++:求n以内被3除余余1的所有整数
  8. 阿里之后 “安卓终结者”来了!
  9. JSK-12 最后一个单词的长度【入门】
  10. GRE Tunnel实现企业网中的***
  11. Java中的【锁】事 - 极客大学架构师训练营 架构师 Albert 分享
  12. Web接入QQ登陆简单入门操作
  13. Cron每年1月5号 4月5号 7月5号 10月5号 00:00:00执行任务
  14. 腾讯qq等级计算公式面试题
  15. 生活照的尺寸是多少?如何将照片裁剪为生活照?
  16. 2014新浪校招笔试题:取水果(17年第一篇让人懵逼的面试题)
  17. 网易校招编程题目之牛牛分苹果
  18. 用Cufflinks计算差异表达
  19. 【堆】 大根堆和小根堆的建立
  20. Matrix Hub 矩阵运算库 C语言

热门文章

  1. 关于物联网卡,您想了解的都在这里
  2. 量子研究再获突破能否成功解决核潜艇通信难题?
  3. 使用虚拟机搭建Centos7
  4. CT一般扫描参数_CT扫描参数介绍(1)
  5. 【OJ每日一练】1039 - 阶乘数列和
  6. linux内核 自旋锁示例,自旋锁(示例代码)
  7. 利用OpenCV实现欧拉数的计算
  8. (域名解析过程)web请求过程全解析一
  9. uni-app 项目怎么运行到手机
  10. Python 赵云被动免伤计算