【发布时间】:2018-01-16 00:24:33
【问题描述】:
我认为这是一个相当基本的问题,我找不到一个优雅的解决方案。想象一下,我在二维空间中有两条相当复杂的线(例如 B 样条),由两个维度矩阵 (n,2) 跨越,其中 n(行)是沿线的点数,两列分别对应x和y坐标。更多信息:
- 两个连续点之间的距离相似,但不是恒定的。
- 交点不一定是跨越线的点。
- 可能存在(理论上)任意数量的交叉口
我想找到这些线相交的点。就我的目的而言,将每两个连续点之间的线视为线性就足够了。
不幸的是,到目前为止,我能想出的每个解决方案都非常低效(例如,使用两个嵌套的 for 循环并检查一条线上两点的每一段与另一条线上的每一段)。必须有一种更优雅的方式来做到这一点。
是否有任何类型的函数可以简化此类例程的实现?
P.S.:您可以在下面找到我上面描述的系统的插图。
【问题讨论】:
-
你有一个连续的函数来创建这些行吗? x 点的距离和位置是否相同?
-
如果上面的问题都不是,你可以用二叉树搜索来迭代。
-
点之间的距离不是常数,但是一条曲线上的每个点[x, y1]在另一条曲线上都有一个等价点[x, y2]?
-
@Piinthesky 不幸的是,事实并非如此。但这给了我一个好主意:在每条线之间插入 x 以使其如此,然后将 y 值相互减去,然后识别符号变化的点!这实际上可能是解决方案......
-
folk.uio.no/martinre/Publications/intersection-preprint.pdf 这可能是一本好书。不过还是很棘手……
标签: python linear-algebra intersection