「java画曲线」java画曲线图

博主:adminadmin 2023-01-09 20:15:07 811

今天给各位分享java画曲线的知识,其中也会对java画曲线图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java编程绘制正弦曲线。

写得比较简单哈。

package OnlineUserCount;

import java.awt.*;

import javax.swing.*;

public class Sin extends JPanel{

private double x;

private double y;

@Override

protected void paintComponent(Graphics g) {

// TODO Auto-generated method stub

super.paintComponent(g);

g.setColor(Color.WHITE);//设置面板背景色

g.fillRect(0, 0, 400, 300);//填充面板

g.setColor(Color.RED);//设置画线的颜色

for(x=0;x=360;x+=0.1)//一个周期

{

y=Math.sin(x*Math. PI/180);//转化为弧度,1度=π/180弧度

y=(100+80*y);//便于在屏幕上显示

//g.drawString(".",(int)x,(int)y);//用这种方式也可以

g.drawLine((int)x, (int)y, (int)x,(int) y);//画点

}

}

public static void main(String []args){

Sin s= new Sin();

JFrame j=new JFrame();

j.setTitle("一个周期的正弦曲线");

j.add(s);

j.setSize(400, 300);

j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

j.setVisible(true);

}

}

//效果截图

java编程绘制正弦曲线是什么?

写得比较简单哈。

package OnlineUserCount;

import java.awt.*;

import javax.swing.*;

public class Sin extends JPanel{

private double x;

private double y;

@Override

protected void paintComponent(Graphics g) {

// TODO Auto-generated method stub

super.paintComponent(g);

g.setColor(Color.WHITE);//设置面板背景色

g.fillRect(0, 0, 400, 300);//填充面板

g.setColor(Color.RED);//设置画线的颜色

for(x=0;x=360;x+=0.1)//一个周期

{

y=Math.sin(x*Math. PI/180);//转化为弧度,1度=π/180弧度

y=(100+80*y);//便于在屏幕上显示

//g.drawString(".",(int)x,(int)y);//用这种方式也可以

g.drawLine((int)x, (int)y, (int)x,(int) y);//画点

}

}

public static void main(String []args){

Sin s= new Sin();

JFrame j=new JFrame();

j.setTitle("一个周期的正弦曲线");

j.add(s);

j.setSize(400, 300);

j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

j.setVisible(true);

}

}

//效果截图

java怎样绘制螺旋曲线

用极坐标方程,一个点一个点的画。给你段我以前写的程序,虽然不是螺旋曲线,但也差不多。import java.awt.*;

import javax.swing.*;public class Spirograph extends JApplet {

public static void main(String s[]) {

JFrame frame = new JFrame();

frame.setTitle("Spirograph");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JApplet applet = new Spirograph();

applet.init();

frame.getContentPane().add(applet);

frame.pack();

frame.setVisible(true);

}

public void init() {

JPanel panel = new SpiroPanel();

getContentPane().add(panel);

}

}class SpiroPanel extends JPanel{

int nPoints = 1000;

double r1 = 60;

double r2 = 50;

double p = 70;

public SpiroPanel() {

setPreferredSize(new Dimension(400, 400));

setBackground(Color.white);

} public void paintComponent(Graphics g) {

super.paintComponent(g);

Graphics2D g2 = (Graphics2D)g;

g2.translate(200,200);

int x1=(int)(r1+r2-p);

int y1=0;

int x2;

int y2;

for (int i=0; inPoints; i++) {

double t = i*Math.PI/90;

x2 = (int)((r1+r2)*Math.cos(t)-p*Math.cos((r1+r2)*t/r2));

y2 = (int)((r1+r2)*Math.sin(t)-p*Math.sin((r1+r2)*t/r2));

g2.drawLine(x1, y1, x2, y2);

x1 = x2;

y1 = y2;

}

}

}

JAVA画正弦曲线

import javax.swing.*;

import javax.swing.event.*;

import java.awt.*;

import java.awt.event.*;

public class SinCos extends JFrame{

    private final int WIDTH = 900, HEIGHT = 450;//窗口默认的宽度、高度

    private final int offsetX=15;//原点的距离窗口左边空白

    private final int offsetY=5; //原点的距离窗口顶边空白

    private final int stepX=200; //横向步进

    private final int stepY=200; //纵向步进

    private final Color colBack = Color.white;     //背景颜色

    private final Color colText = Color.blue;      //文字标签颜色

    private final Color colCros = Color.DARK_GRAY; //轴颜色

    private final Color colLine = Color.red;       //线颜色

    

    private JRadioButton rdSin=new JRadioButton("Sin");

    private JRadioButton rdCos=new JRadioButton("Cos");

    private JButton btnDraws = new JButton("画线");

    private JButton btnClear = new JButton("清空");

    private boolean bDraw = false;

    

    public void paint(Graphics g){

        super.paint(g);   //让父类先处理

        int w=getWidth(); //窗口的宽度

        int h=getHeight();//窗口的高度

        

        g.setColor(colBack);    //底色用白色

        g.fillRect(0, 0, w, h);    //填充整个窗口

        rdSin.repaint();

        rdCos.repaint();

        btnDraws.repaint();

        btnClear.repaint();

        if(!bDraw){

            return ;

        }

        

        int mid_y=(h-offsetY)/2+10;//半高

        g.setFont(g.getFont().deriveFont(10f));//字体大小

        g.setColor(colCros);        //横线和竖线,用深灰色

        g.drawLine(0, offsetY+mid_y, w, mid_y+offsetY);        //横线中线

        g.drawLine(offsetX, offsetY, offsetX, h);    //竖线中线

        

        g.setColor(colText); //刻度用蓝色

        int maxX=(int)Math.round( (w-offsetX) / stepX);//计算一下横向最大刻度

        for(int i=0;i=maxX;i++){

            g.drawLine(offsetX+stepX*i, offsetY+mid_y-5, offsetX+stepX*i, offsetY+mid_y+5);//横线刻度,90步进,方便后面画线的计算

            g.drawString(String.valueOf(90*i), offsetX+stepX*i-5, offsetY+mid_y+10+5); //刻度是90度

        }

        

        int maxY=(int)Math.round( mid_y / stepY);//计算一下纵向最大刻度

        for(int i=1;i=maxY;i++){

            g.drawLine(offsetX-5, offsetY+mid_y-stepY*i, offsetX+5, offsetY+mid_y-stepY*i);//竖线正刻度,100步进

            g.drawString(String.valueOf(stepY*i), offsetX+10, offsetY+mid_y-stepY*i+5);

            g.drawLine(offsetX-5, offsetY+mid_y+stepY*i, offsetX+5, offsetY+mid_y+stepY*i);//竖线负刻度,100步进

            g.drawString(String.valueOf(-stepY*i), offsetX+10, offsetY+mid_y+stepY*i+5);

        }

        

        g.setColor(colLine);   //曲线用红色

        int x1, y1, x_=-1,y_=0;

        for(int i=0; i=w; i++){ //从0度到窗口宽度,开始画Sin()点

            x1=((Double)(offsetX+i/90.0*stepX) ).intValue();

            if(rdSin.isSelected()){

                y1=offsetY+((Double)( mid_y+stepY*Math.sin( Math.toRadians(i) )) ).intValue();

            }else{

                y1=offsetY+((Double)( mid_y+stepY*Math.cos( Math.toRadians(i) )) ).intValue();

            }

            if(x_==-1){

                x_=x1;y_=y1;

            }

            g.drawLine(x_, y_, x1, y1);

            x_=x1;y_=y1;

        }

    }

    public SinCos(){

        super("测试Graphics+Sin/Cos");

        this.setSize(WIDTH, HEIGHT);

        this.setLayout(null);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        

        ButtonGroup group = new ButtonGroup();

        group.add(rdSin);

        group.add(rdCos);

        this.getContentPane().add(rdSin);

        this.getContentPane().add(rdCos);

        this.getContentPane().add(btnDraws);

        this.getContentPane().add(btnClear);

        this.setVisible(true);

        this.doLayout();

        btnDraws.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e){

                bDraw=true; SinCos.this.repaint();

            }

        });

        btnClear.addActionListener(new ActionListener(){

            public void actionPerformed(ActionEvent e){

                bDraw=false;SinCos.this.repaint();

            }

        });

        rdSin.setSelected(true);

    }

    public void doLayout(){

        super.doLayout();

        rdSin.setBounds(10, 15, 50, 20);

        rdCos.setBounds(rdSin.getX()+rdSin.getWidth()+5, 15, 50, 20);

        btnDraws.setBounds(rdCos.getX()+rdCos.getWidth()+5, 12, 70, 25);

        btnClear.setBounds(btnDraws.getX()+btnDraws.getWidth()+3, 12, 70, 25);

    }

    

    public static void main(String[] args){

        EventQueue.invokeLater(new Runnable()  {

            public void run()   {

                new SinCos();

            }

        });

    }

}

java 怎么画一个曲线

我做了一个简单的例子,还没有完善好,只是起到一个抛砖引玉的作用,希望你能自己把它补完整。

package test;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import javax.swing.border.LineBorder;

public class DrawFn extends JFrame{

private JTextField txt_interval;

private JTextField txt_c;

private JTextField txt_b;

private JTextField txt_a;

private drawFnPanel panel = new drawFnPanel();

/**

* @param args

*/

public static void main(String[] args) {

DrawFn frame=new DrawFn();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

public DrawFn() {

super();

getContentPane().setLayout(null);

final JLabel aLabel = new JLabel();

aLabel.setText("a=");

aLabel.setBounds(10, 10, 21, 18);

getContentPane().add(aLabel);

txt_a = new JTextField();

txt_a.setBounds(31, 8, 87, 22);

getContentPane().add(txt_a);

final JLabel bLabel = new JLabel();

bLabel.setText("b=");

bLabel.setBounds(136, 10, 21, 18);

getContentPane().add(bLabel);

txt_b = new JTextField();

txt_b.setBounds(159, 8, 87, 22);

getContentPane().add(txt_b);

final JLabel cLabel = new JLabel();

cLabel.setText("c=");

cLabel.setBounds(267, 10, 32, 18);

getContentPane().add(cLabel);

txt_c = new JTextField();

txt_c.setBounds(290, 8, 87, 22);

getContentPane().add(txt_c);

final JLabel label = new JLabel();

label.setText("步长=");

label.setBounds(398, 10, 47, 18);

getContentPane().add(label);

txt_interval = new JTextField();

txt_interval.setBounds(440, 8, 87, 22);

getContentPane().add(txt_interval);

final JButton button = new JButton();

button.addActionListener(new draw_actionAdapter(this));

button.setText("绘制");

button.setBounds(533, 5, 61, 28);

getContentPane().add(button);

panel.setBorder(new LineBorder(Color.black, 1, false));

panel.setBounds(10, 36, 599, 389);

getContentPane().add(panel);

}

public void paintFn(ActionEvent e){

panel.paintFn(Integer.parseInt(txt_a.getText()), Integer.parseInt(txt_b.getText()), Integer.parseInt(txt_c.getText()), Integer.parseInt(txt_interval.getText()));

}

}

class drawFnPanel extends JPanel{

private int _a=0;

private int _b=0;

private int _c=0;

private float _interval=0.01f;

public void paintFn(int a,int b,int c,int interval){

_a=a;

_b=b;

_c=c;

_interval=interval;

repaint();

}

private double getY(float x){

return _a*x*x+_b*x+_c;

}

public void paintComponent(Graphics g){

Graphics2D g2d=(Graphics2D)g;

if(_a==0 _b==0 _c==0){

return;

}

for(float i=-100f;i100f;i=i+_interval){

g2d.drawRect((int)i, (int)getY(i), 1, 1);

}

}

}

class draw_actionAdapter implements ActionListener{

private DrawFn adapter;

public draw_actionAdapter(DrawFn adapter){

this.adapter=adapter;

}

public void actionPerformed(ActionEvent e) {

adapter.paintFn(e);

}

java画曲线的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java画曲线图、java画曲线的信息别忘了在本站进行查找喔。