代码之家  ›  专栏  ›  技术社区  ›  Shawn Mclean

C#-三角代码解释(物理)

  •  2
  • Shawn Mclean  · 技术社区  · 16 年前

    ball.velocity=新

    ball.rotation是精灵以我认为的弧度旋转。

    为什么他们只能用弧度角度来找到x位置,然后用同样的方法来找到斜边指向的方向的y位置。

    所以这里有两个问题。解释上面的代码,并将精灵指向已知点的方向。

    更新:

    目标点。 鼠标点。

    5 回复  |  直到 16 年前
        1
  •  10
  •   jason    16 年前

    每个角度对应于单位圆上的一个点(单位圆是以半径为1的原点为中心的唯一圆;也就是说,单位圆是满足以下条件的一组点 x^2 + y^2 = 1 ).对应关系如下:给定一个角度 theta , θ 对应于该点 (cos theta, sin theta) 为什么 (cosθ,sinθ) 住在单位圈子里?因为每个人最喜欢的身份

    cos^2 theta + sin^2 theta = 1.
    

    这是与 x = cos theta y = sin theta ,重点 (x, y) 满足 x^2+y^2=1 以便 (x,y) 位于单位圆上。

    要反转此情况,给定单位圆上的一个点,您可以使用 inverse tangent (也许你知道 arctan atan 有时 tan -1 ).确切地说,给定 (x,y) 在单位圆上,你可以找到对应的角度 (x,y) 通过计算 theta = arctan(y / x)

    当然,这里有一些混乱的细节。功能 反正切 无法分辨输入之间的区别 (x,y) (-x, -y) 因为 y / x (-y / -x) 具有相同的符号。此外, 反正切 无法处理以下输入 x = 0 因此,我们通常通过定义函数来处理这些问题 atan2 这将为我们处理这些混乱的细节

    atan2(y, x) = arctan(y / x)       if x > 0
                = pi + arctan(y / x)  if y >= 0, x < 0
                = -pi + arctan(y / x) if y < 0, x < 0
                = pi / 2              if y > 0, x = 0
                = -pi / 2             if y < 0, x = 0
                = NaN                 if y = 0, x = 0
    

    在C#中, Math.Atan 是功能吗 反正切 我上面提到的,以及 Math.Atan2 是功能吗 atan2 我在上面提到过。

        2
  •  4
  •   manji    16 年前
         |
        y.-----* P
         |    /|
         |   / |
         | r/  |
         | / a |
         |/)___.__
        O          x
    
        we have:
    
        a = angle in radians
        O: origin
        P: known point
        r: distince between O & P
    
        to calculate x, y:
    
             x = r*cos(a)
             y = r*sin(a)
    
    (in your example : r = 1, a = cannon.rotation)
    

    现在,如果你有x,y,你想要一个:

    if x!= 0  a = atan(y/x)
    otherwise a = sign(y)*Pi/2
    

    更多信息(以及更漂亮的图表): Wikipedia: Polar coordinate system

        3
  •  2
  •   Toad    16 年前

    你可以看到cos和sin返回圆上的点。

    在这方面,将正典的中间视为圆圈的中心。然后,给定一个角度(正典的角度),你就可以得到它用sin和cos指向的圆上的位置。

    答案2:如果你知道x和y,你需要知道角度。你需要一个atan函数,它返回从三角形的斜边形成的角度,其中一个点为0,0,另一个点是x,y点,一个点与90度角

        4
  •  2
  •   Kai    16 年前

    可悲的是,这是一个很好的问题,SO不是最好的回答方式。

    与其在文本中解释,我认为学习以下内容会有所帮助 参数方程 。您可以从在谷歌中搜索“圆参数方程”开始。

    这个概念对我产生影响的方式是尝试不同的代码,直到我理解了sin、cos、圆圈和角度之间的关系。看到图片和图像也有很大帮助。在那之前,我会阅读描述,但永远无法牢牢把握解释。

        5
  •  0
  •   Jon Seigel    16 年前

    如果你不熟悉trig,你的问题很难解释。

    这有点误导,因为结果很可能只是一个方向,而不是实际速度。我假设在那条线下面有一条线,它将向量乘以一个常数,从而给出球的最终运动速度。