相关疑难解决方法(0)

如何确定2D点是否在多边形内?

我正在尝试在多边形算法中创建一个快速 2D点,用于命中测试(例如Polygon.contains(p:Point)).对于有效技术的建议将不胜感激.

graphics performance polygon collision-detection point-in-polygon

473
推荐指数
15
解决办法
26万
查看次数

如何检查点(x,y)是否在笛卡尔坐标系中的多边形内?

这个问题在这里已经有了答案:
Point in Polygon aka hit test
C#Point in polygon

给定在笛卡尔坐标系中用N线方程组成的随机多边形,是否有任何标准公式用于检查点(x,y)的隶属度?

简单的解决办法是让所有的线公式和检查点X这条线之下,高于线和其他线路,等权但这可能会是乏味的.

我应该注意,多边形可以是任何形状,具有任意数量的边,并且可以是凹的或凸的.

为方便起见,我已经添加了这些实用功能:

float slope(CGPoint p1, CGPoint p2)
{
    return (p2.y - p1.y) / (p2.x - p1.x);
}

CGPoint pointOnLineWithY(CGPoint p, float m, float y)
{
    float x = (y - p.y)/m + p.x;
    return CGPointMake(x,y);
}

CGPoint pointOnLineWithX(CGPoint p, float m, float x)
{
    float y = m*(x - p.x) + p.y;
    return CGPointMake(x, y);
}
Run Code Online (Sandbox Code Playgroud)

c algorithm math polygon computational-geometry

14
推荐指数
1
解决办法
4万
查看次数

如何最快地检查点(3D)是否是由一组点给出的凸包内部

我设置了点(3D)P,它是凸包(每一个)的顶点.我正在寻找检查给定点p0是否不在此凸包外的方法.

我将不得不多次重复检查(对于不同的p0).因此,如果可以重用部分计算,那将是很好的.

在stackoverflow页面上,我发现: 找到一个点是否在一组凸包内部而不计算船体本身 有2个aproche:首先基于凸壳属性 - 线性方程组.基于观察的声音:"当且仅当从其到所有其他点的所有向量的方向在其周围的圆/球/超球的一半上时,该点位于其他点的凸包之外. "

不幸的是,我不知道究竟能做到这一点.首先给我不可解的方程组 - 3个方程,其中n未知(n> 3).我怎么能这样呢?我做错了吗?在第二种方法中,我不知道如何检查这个假设.

algorithm graphics geometry computational-geometry

7
推荐指数
1
解决办法
8315
查看次数

确定(x,y,z)点是否在由点阵列定义的形状内

如果我有一个点数组(x,y,z)并给出一个单点(x,y,z),我用什么代码来确定该点是否位于数组定义的形状内?

我在这个上画了一个空白......

我正在使用C#

编辑

感谢回复人员,从评论中我发现了这个链接(http://alienryderflex.com/polygon/),它很好地解释了这个过程.

谢谢!

供参考:

bool pointInPolygon() {

      int      i, j=polySides-1 ;
      boolean  oddNodes=NO      ;

      for (i=0; i<polySides; i++) {
        if (polyY[i]<y && polyY[j]>=y
        ||  polyY[j]<y && polyY[i]>=y) {
          if (polyX[i]+(y-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<x) {
            oddNodes=!oddNodes; }}
        j=i; }

      return oddNodes; }
Run Code Online (Sandbox Code Playgroud)

它需要一些工作,但这就是它的核心.

再次感谢

c# arrays point shape shapes

5
推荐指数
1
解决办法
4147
查看次数

给定构成边界的 GPS 坐标列表,我如何计算我的位置是否在该边界内?

假设我有数百个甚至数千个 GPS 坐标、纬度和经度,它们构成了一个国家/地区的边界。

我也有我目前的位置纬度和经度。

我如何确定(使用 C#,为 Windows10 UWP 编程)我的位置是否在某个国家/地区的边界内?

EG 假设我拥有构成下图中红线的所有点。如果我在 X 位置,我的函数将返回 true。如果我在 Y 位置,我的函数将返回 false。

地图示例

latitude-longitude point-in-polygon computational-geometry

2
推荐指数
1
解决办法
1401
查看次数