Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定点是否位于有界区域内的算法_C#_Algorithm - Fatal编程技术网

C# 确定点是否位于有界区域内的算法

C# 确定点是否位于有界区域内的算法,c#,algorithm,C#,Algorithm,如何确定一个或多个点是否位于给定边界的区域内?例如,在下图中,三个蓝色点位于红色边界区域内,两个红色点位于蓝色边界区域内,并且有三个点(两个蓝色点和一个红色点)不位于任何指示区域内 看 它是C,但代码/算法可以轻松地转换为C。看 它是C,但代码/算法可以轻松地转换为C。从该点画一条线。检查它是否穿过任何区域边以及它是线的哪一侧。 如果它在每一边与它们相交奇数次,它就在该区域内。从该点画一条线。检查它是否穿过任何区域边以及它是线的哪一侧。 如果它在每边交叉奇数次,它就在区域中。我不知道这样做的算法

如何确定一个或多个点是否位于给定边界的区域内?例如,在下图中,三个蓝色点位于红色边界区域内,两个红色点位于蓝色边界区域内,并且有三个点(两个蓝色点和一个红色点)不位于任何指示区域内

看 它是C,但代码/算法可以轻松地转换为C。


它是C,但代码/算法可以轻松地转换为C。

从该点画一条线。检查它是否穿过任何区域边以及它是线的哪一侧。
如果它在每一边与它们相交奇数次,它就在该区域内。

从该点画一条线。检查它是否穿过任何区域边以及它是线的哪一侧。
如果它在每边交叉奇数次,它就在区域中。

我不知道这样做的算法,但在C.NET框架中,可以使用类的region.IsVisible方法来完成。可以使用构造函数创建自定义区域。GraphicPath本身可以由点数组构造。

我不知道执行此操作的算法,但在C.NET framework中,可以使用类的Region.IsVisible方法来执行此操作。可以使用构造函数创建自定义区域。图形路径本身可以由点阵列构成。

在谷歌上搜索多边形中的点算法,你会发现一些。可能的重复。你有多边形的一些数学定义吗?换句话说:你有任何公式可以描述它们吗?谢谢你,Jens,看来我需要在Google上搜索多边形中的点算法,你会找到一些。可能的重复你有一些多边形的数学定义吗?换句话说:你有什么公式可以描述它们吗?谢谢你,Jens,似乎我不需要在凹曲面的情况下真正正确。如果在多边形外但在洞穴内绘制一个点,则绘制的线将穿过多边形,但继续在多边形外it@Tigran,但它会先穿过洞壁,然后在出去的路上再次穿过多边形墙,这使得它有两个不是奇数的交叉点。你可以想象,这条不起眼的线将在多边形的一侧交叉2次,在多边形的顶点上正好交叉1次。只是触摸它…@Tigran,如果它触摸一个顶点,它将穿过构成该顶点的两条线。对于这一点,应该有一个不太难想象的特殊情况。对于凹面,情况并非如此。如果在多边形外但在洞穴内绘制一个点,则绘制的线将穿过多边形,但继续在多边形外it@Tigran,但它会先穿过洞壁,然后在出去的路上再次穿过多边形墙,这使得它有两个不是奇数的交叉点。你可以想象,这条不起眼的线将在多边形的一侧交叉2次,在多边形的顶点上正好交叉1次。只是触摸它…@Tigran,如果它触摸一个顶点,它将穿过构成该顶点的两条线。因此,应该有一个不太难想象的特殊情况。