0

我已经设法让花栗鼠物理学和其他一些东西在我的屏幕上放下一个球,我可以用一些按钮/加速度计影响重力。耶我!

接下来,我想关闭重力,并模拟一个自上而下的视图,球会根据自己的意愿在屏幕上移动。我可以使用 对球施加力body -> f = cpv(dx, dy),但我对物理和数学的了解并不多,所以我试图了解我输入的两个值是如何导致运动的。

我知道正值会将其向右或向下移动,而负值会将其向左或向上移动,但这就是我目前所理解的全部。

例如,如果我想选择一个随机的罗盘方位(0 - 359 度)并将其移动到该方位上,那么这样的值如何转换为矢量?

我创建了这个方法,但它没有按预期工作,我不确定我做错了什么:

- (CGPoint) getVectorFromAngle: (float) angle AndMagnitude: (float) magnitude
{
    float x = magnitude * cos(angle);
    float y = magnitude * sin(angle);
    CGPoint point = CGPointMake(x, y);
    NSLog(@"Made a CGPoint of X: %f and Y: %f.", point.x, point.y);
    return point;
}

如果我给它一个角度45和一个大小10,它会创建 X 为 5.253220 和 8.509035。但是,此处找到的计算器显示它应该将 X 和 Y 创建为 7.0711。

我在这里有什么问题?

4

2 回答 2

1

sin 和 cos 以弧度表示角度,将角度乘以 π/180。

于 2013-01-09T14:40:46.197 回答
0

值得指出的是,Chipmunk 已经包含了一个功能,可以完全满足您的需求。

cpvmult(cpvforangle(radians), magnitude)
于 2013-01-10T04:09:09.267 回答