Ios 还原函数以获取特定值

Ios 还原函数以获取特定值,ios,objective-c,math,Ios,Objective C,Math,我有这个函数,它返回x和y位置,只要加上度数,它就可以使物体像卫星绕行星一样做圆周运动。 在我的例子中,它像椭圆一样移动,因为我在dist中添加了+30 -(CGPoint)circularMovement:(float)degrees moonDistance:(CGFloat)dist { if(degrees >=360)degrees = 0; float x = _moon.position.x + (dist+30 + _moon.size.height/2) *co

我有这个函数,它返回
x
y
位置,只要加上度数,它就可以使物体像卫星绕行星一样做圆周运动。
在我的例子中,它像椭圆一样移动,因为我在dist中添加了
+30

-(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;  
}
我想要的是反转此函数,给出对象的
x
y
位置,并返回dist值

这可能吗?

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

如果你有一个原点和一个目标,原点有坐标(x1,y1),目标有坐标(x2,y2),那么使用

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

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

x=x2-x1; y=y2-y1

距离=数学平方根(x*x+y*y)

数学是你的语言的数学库

    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);
是最初计算值的方式,因此逆公式为:

距离=((y-_moon.position.y)/(sin(度))-_moon.size.height/2


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

换句话说,帮我做三角作业?