2014-09-28 52 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更簡單。

相關問題