2
事实是,我正在尝试编写能够绘制数学函数的应用程序。该代码使平方函数的图形,并罚款。我的问题是我想制作三次函数。这是到目前为止我的代码:在java中绘制三次函数的最佳方法
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
public class plano extends JPanel{
public plano() {
init();
}
public void init() {
this.setBorder(BorderFactory.createLineBorder(Color.black));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.drawLine(0, this.getHeight()/2, this.getWidth(), this.getHeight()/2);
g.drawLine(this.getWidth()/2, 0,this.getWidth()/2 , this.getHeight());
}
// y=c*x2 +c*x +c
public void paintSQRFunc(Graphics g,double x3mult, double x2mult,
double x1mult,double cons, double x1,double x2)
{
for(double i=x1;i<x2;i++)
{
double y = ((double)Math.cbrt(i)*x3mult)+((double)Math.pow(i,2)*x2mult)+i*x1mult+cons;
double xp = i+1;
double yp = ((double)Math.cbrt(xp)*x3mult)+((double)Math.pow(xp,2)*x2mult)+xp*x1mult+cons;
g.drawLine((int)coord_x(i), (int)coord_y(y), (int)coord_x(xp), (int)coord_y(yp));
}
}
private double coord_x(double x)
{
double real_x = x+this.getWidth()/2;
return real_x;
}
private double coord_y(double y)
{
double real_y = -y+this.getHeight()/2;
return (real_y);
}
}
然后主类,我调用的方法:
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.event.ActionListener;
import graficadora.Graficadora;
public class Ventana extends JFrame implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Graficadora.plano.paintSQRFunc(Graficadora.plano.getGraphics(),1,1,0,0,-200,200);
正如你看到的,我试图使它能够绘制三次函数。当我设置的参数绘制的三次函数,有我的错误:(它应该图形Y = X^3的曲线显示在90度倾斜。)
检查两种方法[这里](http://stackoverflow.com/a/20556929/230513);不使用'getGraphics()',它不应该以所示的方式使用。 – trashgod