昨天我发布了这个问题,我得到了一些有用的帮助,但无法解决问题。我想我一直在努力。
确定。我试图在Android的画布上将球移动一圈。在做了一些研究并阅读了一些类似的问题后 - 我认为我的逻辑有所下降,但形状仍然保持不变。基本上我做x = a + rcos(theta),y = rain(theta)。我不确定问题是什么。我的代码如下。有谁知道我做错了什么?我已经阅读了其他问题,并且不知道为什么我无法使其发挥作用。
public class DrawingTheBall extends View {
Bitmap bball;
int x,y, theta;
public DrawingTheBall(Context context) {
super(context);
// TODO Auto-generated constructor stub
bball = BitmapFactory.decodeResource(getResources(), R.drawable.blueball);
x = 0;
y = 0;
theta = 45;
}
public void onDraw(Canvas canvas){
super.onDraw(canvas);
Rect ourRect = new Rect();
ourRect.set(0, 0, canvas.getWidth(), canvas.getHeight()/2);
float a = 10;
float b = 10;
float r = 20;
theta = (int) Math.toRadians(10);
Paint blue = new Paint();
blue.setColor(Color.BLUE);
blue.setStyle(Paint.Style.FILL);
canvas.drawRect(ourRect, blue);
if(x < canvas.getWidth()){
x = (int) (a +r*Math.cos(theta));
}else{
x = 0;
}
if(y < canvas.getHeight()){
y = (int) (b +r*Math.sin(theta));
}else{
y = 0;
}
Paint p = new Paint();
canvas.drawBitmap(bball, x, y, p);
invalidate();
}
}
答案 0 :(得分:3)
你必须在行上增加theta
:
theta = (int) Math.toRadians(10);
如果你总是以相同的角度绘制,你总是会画到同一个位置。
编辑:
您可以将上述行放在构造函数中,然后在onDraw
中,您可以执行以下操作:
theta = (theta + 0.1) % (2 * Math.PI)