还原函数以获取特定值

时间:2014-09-28 02:53:09

标签: ios objective-c math

我有这个函数,它返回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值。

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

2 个答案:

答案 0 :(得分:1)

如果你有一个原点和一个目标,那么具有坐标(x1,y1)的原点和目标的坐标(x2,y2)就可以使用Pythagorean theorem找到它们之间的距离。

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

在大多数语言中,这看起来像这样:

x = x2 - x1; y = y2 - y1;

距离= Math.SquareRoot(x * x + y * y);

数学是你语言的数学库。

答案 1 :(得分: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(degrees))) - _moon.size.height / 2

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