找到包围一个点的线的算法

标签 algorithm language-agnostic geometry

我有以下任务:

In the program we should draw lines on a bit mapped display. An array of n pairs of reals (a<sub>i</sub>,b<sub>i</sub>) defined the n lines y<sub>i</sub> = a<sub>i</sub>*x + b<sub>i</sub>. The lines were ordered in the x-interval [0, 1] in the sense that y<sub>i</sub> < y<sub>i+1</sub> for all values of i between 0 and n-2 and for all values of x in [0, 1]

不太正式的是,垂直板中的线条不接触。给分(x,y) , 其中0 < x < 1 , 我们想确定两条线将点括起来。

我们怎样才能快速解决这个问题?

最佳答案

Function bracket( Real x, Real y, Array a[1..n],b[1..n] of Reals): Returns void 
{
  Integer i = 1;

  While (i<=n && (a[i] * x + b[i]) <= y, i++)

  If (i==1 || i == n+1) 
                       { Print("Not bracket exists");
                         Exit()
                       }
  If (a[i] * x + b[i]) == y)
                       { Print("Point lies on line",i);
                         Exit()
                       }
  Print("Point between lines ", i-1, " and ", i);
}  

但是有一个小问题。见下图:

alt text

你会说点 F 被 [0,1]x[0,1] 中的两条线“括起来”了吗?在这种情况下,正确答案是什么?

关于找到包围一个点的线的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3997359/

相关文章:

algorithm - 是否有一个足够简单的伪随机数生成器可以在您的脑海中实现?

language-agnostic - 学习标准库资源

algorithm - 3D 六边形瓦片 map 上的光线追踪 (LoS)

layout - 在 2D 空间中排列对象的标签而不重叠

ios - 使用 objective-c 在iOS中制作一个没有图像的圆形按钮

algorithm - 使用给定的(错误的)节点距离优化图形的布局

java - 在提供一组 5 个左右的 URL 时生成 URL 模式

c++ - 广度优先搜索的效率

java - 在 Java 中为线程添加额外的方法?

c++ - 如何使用 C++ boost 几何从两个多边形创建环( donut )?