gpt4 book ai didi

java - 无法使物体绕圈移动

转载 作者:太空狗 更新时间:2023-10-29 15:42:10 25 4
gpt4 key购买 nike

我是 android 动画的新手。我正在使用在 youtube 上找到的教程。该应用程序在 Canvas 上绘制了一个球的图片,然后沿对角线移动。我想让球转一圈。我找到了一些关于圆周运动基本数学的信息,但我在实现它时遇到了麻烦。有人可以看看我的代码并告诉我我做错了什么。谢谢。

这是我的代码:

public class DrawingTheBall extends View {

Bitmap bball;
int x,y;

public DrawingTheBall(Context context) {
super(context);
// TODO Auto-generated constructor stub
bball = BitmapFactory.decodeResource(getResources(), R.drawable.blueball);
x = 0;
y = 0;
}

@Override
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;
double theta = 0;
theta = Math.toRadians(45);

Paint blue = new Paint();
blue.setColor(Color.BLUE);
blue.setStyle(Paint.Style.FILL);

canvas.drawRect(ourRect, blue);

if(x < canvas.getWidth()){
//x += 10;
x = (int) (a +r*Math.cos(theta));
}else{
x = 0;
}
if(y < canvas.getHeight()){
//y += 10;
y = (int) (b +r*Math.sin(theta));
}else{
y = 0;
}
Paint p = new Paint();
canvas.drawBitmap(bball, x, y, p);
invalidate();
}

最佳答案

基本上您需要使用正弦和余弦三角函数,在给定角度的情况下,它们会为您提供屏幕上相应 x 和 y 坐标的比率。

一些东西:

double x = a + r * sin(angle);
double y = b + r * cos(angle);

应该可以。

哪里:

r - is the radius of the circle
(a,b) - is the center of the circle
angle - is the desired angle

当然,您需要增加角度,以便您的对象移动。

关于java - 无法使物体绕圈移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16802431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com