java 产生正弦波
2014-06-24 19:43
99 查看
java 产生正弦波
电子信息工程专业需要研究各种波形, 正弦比就是其中一种,下面简述一下用java 如何产生正弦波1、首先新建一个类 sinWave extend JFrame 类型
2、在类中加入一个 public sinWave(){} 方法 用 来实现的
3、 其次设置尺寸大小, 用Dimension 获得品目尺寸 设置窗口出现的位置
4、 添加一个时间 time = new Timer(200, 事件) 时间里面做两件事 首先需要一个 ycopyionts[] 收入值后再粘上去
5、需要天剑一个组件 ,添加组件 addComponetListener的目的也就是为了让 让事件加到里面去 组件做一件事情 赋值 time.start 即可
6、由于是面板, 那么肯定要画图了 ,继承画笔,设置衍射划线 drawLine DrawPolyLine() 等
7、主函数 用类申明一个对象然后设置开关模式。。。。
下面是程序代码:
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.JFrame; import javax.swing.Timer; public class sinWave extends JFrame{ private static final int NUM = 1500; private static final double TWOPI = 2*3.1415926; private static final int STEP = 10; private int width; private int height; private int i; private int[] xPoint = new int[NUM]; private int[] yPoint = new int[NUM]; private int[] yCopyPoints = new int[STEP]; private Timer time; public sinWave() { //设置面板 出现的尺寸和位置 setSize(600,500); setBackground(Color.WHITE); Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize(); width = getWidth(); height = getHeight(); this.setLocation((scrSize.width - width)/2, (scrSize.height - height)/2); setVisible(true); //下面开始对xy 轴数据进行初始化 for(i= 0 ; i < NUM ; i++) { xPoint [i] = width * i/NUM; yPoint [i] = (int)(height/2 *(1- Math.sin(TWOPI* i/NUM))); } //下面添加一个时间监听器 time = new Timer(200, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //在这个时间里面主要做两件事情 先截取一段然后黏在后面 //而且做的事情越x 无关 for(i = 0 ; i < STEP; i++) { yCopyPoints[i] = yPoint[i]; } for(i = 0 ; i < NUM - STEP ; i++) { yPoint[i] = yPoint[i+ STEP]; } for(i = 0; i < STEP ; i++) { yPoint[i+ NUM - STEP] = yCopyPoints[i]; } repaint(); } }); //时间监听事件完成之后现在要做的是加一个组件适配器 addComponentListener(new ComponentAdapter() { //适配器中新建一个函数 给这个函数提那家一个事件 public void componentResized(ComponentEvent ce) { width = getWidth(); height = getHeight(); for(i = 0 ; i < NUM ; i++) { xPoint[i] = width* i /NUM; yPoint[i] = (int)(height/2 *( 1- Math.sin(TWOPI*i/NUM))); } } }); time.start(); } //上面是主方法里面的实现下面是画图函数 public void paint(Graphics g){ super.paint(g); //继承 g.setColor(Color.RED); g.drawLine(0, height/2, width, height/2); g.setColor(Color.GREEN); g.drawPolyline(xPoint, yPoint, NUM); } public static void main(String[] args) { sinWave sinwave = new sinWave(); sinwave.setDefaultCloseOperation(EXIT_ON_CLOSE); } }
相关文章推荐
- 简述JAVA对象的产生与使用
- Java语言入门 -- 第一章 Java的产生与特点
- WSDP 2.0产生的WebService类在Java Application Server 9下的问题
- JAVA语言随机数的产生及其应用
- java与模式笔记(1)——设计模式产生的原因
- java中使用ObjectOutputStream和ObjectInputStream时产生的“invalid stream header”错误解决方法
- java中随机数产生的办法
- 产生验证图片JAVA代码
- Unable to find a javac compiler;Perhaps JAVA_HOME does not point to the JDK异常产生原因和解决方法。
- Java类文件产生规则
- 关于 java 中 Double 型 用于计算产生的误差举例 ,应该用BigDecimal代替Double
- Java 产生 UUID
- java产生UUID
- 由java.lang.Integer中Integer valueOf(int i)产生的问题
- Java类文件产生规则
- Java语言的产生及其特点
- Java中检验random是否产生0.0和1.0的问题
- java产生随机数的两种途径
- java 随机产生字符串
- java 产生随机数的两种方式