【问题标题】:Find angle between two points, respective to horizontal axis?找到两点之间相对于水平轴的角度?
【发布时间】:2011-10-19 22:31:14
【问题描述】:

我有两个点,一个总是在原点 (0,0),另一个可以在世界其他任何地方。我想找到它们之间相对于水平轴的角度。

     |     2
     |    /
     |   / 
     |  /  
     | /     
     |/ a  
  ---1-------------- (horizontal axis)
     |

  a = angle (~50 degrees, counter clockwise)

在上面我会构建一个直角三角形并使用 sohcahtoa 来找出我想要的缺失角,但是当第二个点在不同的象限中时,它会变得有点难看,比如这种情况:

2    |
\    |
 \   |
  \  |
   \a|a   
    \|a
  ---1--------------
     |
     |

  a = angle (~135, counter clockwise)

根据第二点所在的象限,我最终会遇到一堆不同的情况。我认为必须有一个更简单、更通用的解决方案。这有点像试图找到圆的边缘上的一点与其中心之间的角度,相对于原点的水平轴。

有什么好的方法可以做到这一点?

【问题讨论】:

    标签: math


    【解决方案1】:

    大多数编程语言/API 都提供了一个函数atan2(),它可以找到角度并且考虑象限。就用那个吧。

    【讨论】:

      【解决方案2】:

      首先我们要找到连接两点的直线方程:

      设 p = (x0,y0) 为第二个点。 如果 x=0,则答案是 90 度。 否则设 m 为 y0/x0。

      y = m(x-x0) +y0

      m的tg^-1(即arctg)为角度。

      还要注意,如果 (x0,y0) == (0,0) 角度未定义

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-03
        • 2011-11-27
        • 2021-12-22
        相关资源
        最近更新 更多