Geometry 二维平面中的晶格点

Geometry 二维平面中的晶格点,geometry,computational-geometry,Geometry,Computational Geometry,给定二维平面上的2个点,这两点内有多少晶格点 例如,对于A 3、B 3和B-1,-1,输出为5。这些点是:-1、-1、0、0、1、1、2、2和3、3。显然,晶格点位于两点内,你的意思是让LP代表晶格点,LP位于两点A和B之间的线上 对于某些斜率和截距数m和b,AB线的方程式为y=m*x+b。对于感兴趣的情况,我们可以假设m,b是有理的,因为如果其中一个是无理的,那么AB上最多有一个LP。证明:如果两个或更多LP在线上,它有有理斜率,比如e/d,带有d,e整数;那么y=b+x*e/d,在lpx处,

给定二维平面上的2个点,这两点内有多少晶格点


例如,对于A 3、B 3和B-1,-1,输出为5。这些点是:-1、-1、0、0、1、1、2、2和3、3。

显然,晶格点位于两点内,你的意思是让LP代表晶格点,LP位于两点A和B之间的线上

对于某些斜率和截距数m和b,AB线的方程式为y=m*x+b。对于感兴趣的情况,我们可以假设m,b是有理的,因为如果其中一个是无理的,那么AB上最多有一个LP。证明:如果两个或更多LP在线上,它有有理斜率,比如e/d,带有d,e整数;那么y=b+x*e/d,在lpx处,y在线,d*b=d*y-x*e,这是一个整数,因此b是有理的

在下面,我们假设A=u,v和B=w,z,u,w和v,z有有理差,通常写y=mx+B,m=e/d和B=g/f

案例1。A、 B都是LP:设q=gcdu-w,v-z;以d=u-w/q和e=v-z/q为例,很容易看出AB上有q+1晶格点

案例2a。A是LP,B不是:如果u-w=h/i和v-z=j/k 那么m=j*i/h*k。设q=gcdj*i,h*k,d=h*k/q,e=j*i/q,w'=u+d*floorw-u/d,类似于z',然后求解u,v,w',z',如情况1所示。对于案例2b,互换A和B

案例3。A和B都不是LP:通过A,B在延伸线上找到LP C后,使用类似于案例2的算法在线段AB内找到LP A'并应用案例2。要找到A',如果m=e/d,b=g/f,请注意f*d*y=d*g+e*f*x的形式是p*x+q*y=r,这是一个简单的丢番图方程,当gcdp,q除以r时,C=x,y是可解的

复杂度:gcdm,n是Olnminm,n因此,如果A,B由x,y距离Dx,Dy分隔,则算法复杂度通常为OlnDx或OlnDy。

2点以内是什么意思?