Algorithm 找到离直线最近的点

Algorithm 找到离直线最近的点,algorithm,math,geometry,Algorithm,Math,Geometry,想象一条穿过原点的直线。因为轮换和 反射很容易,假设坡度在0到1之间。 我们在笛卡尔平面上有一个整型点的网格。 我想找到大于0的网格点,不是一个完整的答案,但在某些情况下是一个优化:如果直线的斜率是一个有理数,那么会有重复,如果D大于分母,那么可以看到更少的点 如果坡度是12/17,那么你不需要从原点看超过17个点。之后,它将重复 当然,在那个例子中,如果D

想象一条穿过原点的直线。因为轮换和 反射很容易,假设坡度在0到1之间。 我们在笛卡尔平面上有一个整型点的网格。
我想找到大于0的网格点,不是一个完整的答案,但在某些情况下是一个优化:如果直线的斜率是一个有理数,那么会有重复,如果D大于分母,那么可以看到更少的点

如果坡度是12/17,那么你不需要从原点看超过17个点。之后,它将重复

当然,在那个例子中,如果D<17,就没有好处了


另外,如果你的斜率是π,你就不走运了…

不是一个完整的答案,但在某些情况下是一个优化:如果直线的斜率是一个有理数,那么就会有重复,如果D大于分母,你可以看到更少的点

如果坡度是12/17,那么你不需要从原点看超过17个点。之后,它将重复

当然,在那个例子中,如果D<17,就没有好处了


另外,如果你的斜率是π,你就不走运了……

这个问题似乎与你的问题相同:

那里被接受的答案使用了a


还有指向此的链接。

此问题似乎与您的问题相同:

那里被接受的答案使用了a


还有与此相关的链接。

正如我在问题中所说的,我正试图找到一个有理数。假设斜率是一个浮点值。@斯塔克:当斜率本身可以表示为一个分母小于D的有理数时,这只是一个优化。正如我在问题中所说的,我正在试图找到一个有理数。假设斜率是一个浮点值。@斯塔克:当斜率本身可以表示为一个有理数,分母小于D时,这只是一个优化。@Mark Ransom。好啊找到我必须旋转的最接近的有理数。可能会有帮助:请忽略我的评论,我误解了这个问题。我的简化只会导致一个线性解决方案,你已经有了。@anatolyg,看起来真的很有前景,
大于0的网格点和@Mark Ransom的确切含义是什么。好啊找到我必须旋转的最接近的有理数。可能会有帮助:请忽略我的评论,我误解了这个问题。我的简化只会得到一个线性的解决方案,你已经有了。@anatolyg,看起来真的很有前景,
网格点大于0的确切含义是什么,不保证log(D),但看起来很好。我用C编写了这个代码,它工作得很好。不保证log(D)但是看起来不错。我用C编写了这个代码,效果很好。