【发布时间】:2012-05-03 16:58:01
【问题描述】:
如果我有一条以极坐标给出的二维线(即距原点的 rho 距离和距 x 轴的 theta 角),我如何确定点位于直线的哪一侧?具体来说,我如何取两个点并确定它们是在这条线的同一侧还是相反侧?
谢谢!
【问题讨论】:
标签: geometry line point polar-coordinates
如果我有一条以极坐标给出的二维线(即距原点的 rho 距离和距 x 轴的 theta 角),我如何确定点位于直线的哪一侧?具体来说,我如何取两个点并确定它们是在这条线的同一侧还是相反侧?
谢谢!
【问题讨论】:
标签: geometry line point polar-coordinates
这样的线有方程:
-x*cos(theta)+y*sin(theta)-rho=0 [1]
点 (x0, y0) 到这条线的距离是
Dist = -x0*cos(theta)+y0*sin(theta)-rho [2]
重要的一点:Dist 的符号取决于一个点位于直线的哪一侧(当该点和坐标原点位于直线的不同侧时为正,否则为负)。
所以计算和比较两个所需点的 [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 线;它在另一边。
希望这会有所帮助! :)
【讨论】:
我知道你有你的线,说 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 就很容易了。
【讨论】: