如何在android中绘制函数曲线?

时间:2015-04-26 11:13:00

标签: android

我有一个函数,y = 50sin(x / 50)+100。 现在我想要做的是绘制这个函数的曲线,但是没有图形绘图仪的任何附加信息,我只需要在屏幕上显示一个波形。 X应对应于我的屏幕X参数和Y对应屏幕的Y参数。 这是我当前视图的代码。

public class Sinusoid extends View {
    Paint paint = new Paint();

    public Sinusoid(Context context) {
        super(context);
        paint.setColor(Color.RED);
    }

    @Override
    public void onDraw(Canvas canvas) {
        //todo draw the line using myFunction
    }

    private double myFunction(double x){
        return 50 * Math.sin(x / 50) + 100;
    }

}

现在的问题是,我该怎么填写我的TODO?

请帮忙,任何文档或示例都非常有用。

提前致谢。

2 个答案:

答案 0 :(得分:2)

想法是这样的:

@Override
public void onDraw(Canvas canvas) {
    for (int x=0; x<canvas.getWidth();x++) {

        canvas.drawPoint(x,(float) myFunction(x),mPaint);
    }
}

但是你最终需要根据画布高度来调整函数的值。

答案 1 :(得分:0)

尝试这样的事情:

    float xv=x0,yv= yo,x,y;
    for (int i = 0; i < maxPoints; i++) {
        x=i * scalex;
        y=function(i)*scaley;
        canvas.drawLine(xv, yv, x, y, paint);
        xv=x;
        yv=y;
    }

图形将显示为连续。