我有一个函数,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?
请帮忙,任何文档或示例都非常有用。
提前致谢。
答案 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;
}
图形将显示为连续。