我想检查一个圆是相交还是位于凸多边形的内部。我发现了一个辉煌的方法来检测一个点是多边形内(从here):如何检查一个圆是否位于凸多边形的内部
public boolean insidePolygon(Vector2 [] vertices, Vector2 p)
{
int i, j;
boolean c = false;
int nvert = vertices.length;
for (i = 0, j = nvert - 1; i < nvert; j = i++)
{
if (((vertices[i].Y > p.Y) != (vertices[j].Y > p.Y)) &&
(p.X < (vertices[j].X - vertices[i].X) * (p.Y - vertices[i].Y)/(vertices[j].Y - vertices[i].Y) + vertices[i].X))
c = !c;
}
return c;
}
这完全适用于单点,但有什么办法,我们可以修改这个检查,如果有一个圆给定的半径是在多边形内?我想这是可能的,因为一个圆实际上是一个点,但更大,但我还没有设法取得成功......
几何上圆是重点**不**只是“一个点,但更大”。一个点有零维,一个圆有两个维。你的问题有点类似于光线追踪“射线球面相交”测试,其中多边形边缘类似于射线 - 尝试着看。 – Alnitak 2014-09-06 14:48:56
目前我正在处理圆圈相交并且分别位于内侧的情况。我只是好奇,如果这种方法可以以某种方式扩展到一次覆盖两种情况。但我必须承认,我的说法“圈子就像一个点”有点幼稚...... – Savail 2014-09-06 14:59:59
我认为这可能取决于你的多边形是否保证是凸包或不。啊 - 我看到你在问题中这么说......嗯。 – Alnitak 2014-09-06 15:08:40