【问题标题】:How to determine which side of a polar line a point lies?如何确定一个点位于极线的哪一侧?
【发布时间】:2012-05-03 16:58:01
【问题描述】:

如果我有一条以极坐标给出的二维线(即距原点的 rho 距离和距 x 轴的 theta 角),我如何确定点位于直线的哪一侧?具体来说,我如何取两个点并确定它们是在这条线的同一侧还是相反侧?

谢谢!

【问题讨论】:

标签: geometry line point polar-coordinates


【解决方案1】:

这样的线有方程:

-x*cos(theta)+y*sin(theta)-rho=0 [1]

点 (x0, y0) 到这条线的距离是

Dist = -x0*cos(theta)+y0*sin(theta)-rho [2]

重要的一点:Dist 的符号取决于一个点位于直线的哪一侧(当该点和坐标原点位于直线的不同侧时为正,否则为负)。

所以计算和比较两个所需点的 [2] 表达式的符号就足够了

【讨论】:

    【解决方案2】:

    您能否获取两个提供的点并计算它们相对于 theta 的角度?

    为了争论,说你的二维线在 (3,3) 处结束;

    二维线: 坐标:(3,3)
    半径:3 * √2
    Theta:0.79 弧度

    第 1 点:
    坐标:(3,4)
    半径:5
    Theta:Arcsin(4/5) = 0.92 弧度

    第 2 点:
    坐标:(3,1)
    半径:√10
    Theta:Arcsin(2/√10) = 0.68 弧度

    点 1 的 Theta 大于 2D Line;它在一个不同的方面。点 2 小于 2D 线;它在另一边。

    希望这会有所帮助! :)

    【讨论】:

      【解决方案3】:

      我知道你有你的线,说 rho 是你的线与 x 轴的交点,而 theta 是你的线和 x 轴之间的角度。

      然后你的行的一个方程会变成

      f(x) = (x-rho)*tan(theta)
      

      要确定一个点 (x0,y0) 是否在该线上方,请检查是否

      f(x0) = (x0-rho)*tan(theta) > y0
      

      检查是否在线下检查

      f(x0) = (x0-rho)*tan(theta) < y0
      

      但请注意,如果 theta= 90°、270°,此方法将失效。但在这种情况下,您只需检查 x0 是大于还是小于 rho 就很容易了。

      【讨论】:

        猜你喜欢
        • 2016-07-16
        • 2020-09-30
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 2021-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多