2014-09-28 37 views
-1

我有这个函数返回xy位置刚刚加起来的程度,它使物体像行星一样绕着卫星移动。
就我而言,它会像椭圆一样移动,因为我将+30添加到dist。恢复一个函数来获得一个特定的值

-(CGPoint)circularMovement:(float)degrees moonDistance:(CGFloat)dist 
{ 
    if(degrees >=360)degrees = 0; 

    float x = _moon.position.x + (dist+30 + _moon.size.height/2) *cos(degrees); 
    float y = _moon.position.y + (dist + _moon.size.height/2) *sin(degrees); 

    CGPoint position= CGPointMake(x, y); 
    return position; 
} 

我想什么是扭转这一功能,使对象的xy位置和找回的DIST值。

这可能吗?
如果是这样,我将如何去实现它?

+0

换句话说,我为我做的功课吗? – 2014-09-28 04:03:26

回答

1

如果你有一个起点和目标,具有坐标(x1,y1)和目标的起源有使用Pythagorean theorem发现它们之间的距离的坐标(x2,y2)上。

点之间的距离是x2和x1之差加上y2和y1之差的平方根。

在大多数语言中,这将是这个样子:

X = X2 - X1; y = y2-y1; y = y1-y2;

distance = Math.SquareRoot(x * x + y * y);

数学是你的语言的数学库。

1
float x = _moon.position.x + (dist+30 + _moon.size.height/2) *cos(degrees); 
    float y = _moon.position.y + (dist + _moon.size.height/2) *sin(degrees); 

是已最初计算出的值的方式,使逆公式将是:

DIST =((Y - _moon.position.y)/(SIN(度))) - _moon .size.height/2

你也可以基于x来计算它,但没有意义,它基于y更简单。

相关问题