确定点是否位于特定几何区域内

时间:2010-02-24 05:37:32

标签: math geometry graph

画一个圆圈。现在将圆圈垂直和水平分成四个区域。采取左上角的区域。如果你在它周围画一个盒子,你就会有一个圆角向东的盒子。

如果在单个左上角区域的那个框中给出一个X和Y坐标,我怎么能判断一个点是在圆的左边还是在右边?

5 个答案:

答案 0 :(得分:5)

您可以通过以下方式解决问题:

  • 圆圈的中心是方框的东南角
  • 圆圈包含该点半径r内的所有点

所以你可以解决问题,给定(a,b)处的圆心,并知道方框的尺寸为r ......任何给定的点(x,y)当且仅当:

时,框也在圆圈内
((b-y)^2 + (a-x)^2) < r^2

当且仅当此条件为假时,此点位于圆圈外部或正好位于圆圈上。

正如Derek E.在评论中建议的那样,在实施此解决方案时,最好比较平方距离以避免sqrt函数的近似值。

答案 1 :(得分:4)

在“画一个盒子”之后,我很困惑。

我将你的帖子可视化为

;  ______________
; |      _  -    |
; |    .         |
; |  *           | [Ascii art win]
; | .            |
; |              |
; |:             |
; |______________|
;

圆角向东是什么意思?我会忽略那一行并尝试继续......

如果圆内有一个点并且你想看看你的x / y是否在界限内,你可以简单地使用毕达哥拉斯定理并测试你的三角形的斜边是否小于或等于圆的半径

Assume r = radius of your circle.
mouse positions are relative to center of circle
if(Math.Sqrt(mx^2+my^2) <= r); //in circle
else; //outside circle

答案 2 :(得分:2)

找到圆心的距离(方框的右下角)。如果距离大于圆的半径(等于框的边缘大小),则该点位于圆的外部。

答案 3 :(得分:0)

毕达哥拉斯定理。将dx和dy作为点与框右下角点的位置之间的差异。取这些值的平方和的平方根。如果该值小于框的高度(或宽度),则该点位于圆圈内。

答案 4 :(得分:0)

好吧,如果你知道这一点在盒子里,那很简单。如果点位于圆圈中,则位于“右侧”,如果位于圆圈外,则位于“左侧”。至少在左上角的情况下。

这应该是相当明显的,但如果你无法看到它,绘制形状,放置一个点,然后从圆心到该点画一条线,如果它穿过圆圈 - 弯曲的角落 - 然后它就在圈子的外面。

那么你的问题就变成了“我怎么判断一个点是否在一个圆圈内。”

我认为没有其他方法可以解决它:

检查该点是否在框中,然后检查它是否在圆圈内(或反之亦然......)

圆圈中的点很简单,并且已经多次回答过。