计算多边形中格点数的算法

use*_*139 9 algorithm math

我试图找到严格位于边界内的格点数.我知道Pick的定理是

A = i + b/2 - 1
Run Code Online (Sandbox Code Playgroud)

其中A =多边形的面积,i是多边形内部的晶格点数,b是多边形周长上的晶格点数.

我可以使用Shoelace公式轻松找到该区域,但我不确定如何获得边界上的点.

我不确定在哪里寻找资源,所以我也很欣赏链接.

Nem*_*emo 11

真是个问题......

既然你在谈论Pick的定理,我会假设所有的顶点都有整数坐标.

您的问题减少到确定从(x 1,y 1)到(x 2,y 2)的线段上有多少格点.由于答案在平移下保持相同的整数,这减少了确定对于任意x和y,从(0,0)到(x,y)的线段上有多少格点.

如果x = 0或y = 0,则答案是1D且无关紧要(即x + 1或y + 1).

否则,答案是gcd(x,y)+ 1.你通过显示(a)(0,0)和(x,y)之间的任何格点必须是"最小"格点的倍数来证明这一点; (b)任何格点必须具有(x,y)因子的坐标.

最后,小心不要在走动多边形时重复计算顶点.