假设我们有两个有限的线段,每个线段由两个点(在两个空间中)定义.我想找到一种方法来获得这两条线的交点.最后,我想将其扩展到一组连接的线段.
我在这里找到了一个很好的解决方案:Python - matplotlib:找到线图的交集.然而,这依赖于scipy,我相信它需要BLAS,这是出于各种原因我想避免.
matplotlib有一个名为Path的模块,它有一个intersects_path()函数(http://matplotlib.org/api/path_api.html#matplotlib.path.Path.intersects_path),它对于交集的存在返回true或false,但是不是我要求的具体位置.
有谁知道这个干净的方法?
我想出的任何解决方案都很冗长,如果解决方案已经存在,我真的不想重新发明轮子.
谢谢!
我有轨迹数据,其中每个轨迹由一系列坐标(x,y点)组成,每个轨迹由唯一ID标识.
这些轨迹位于 x-y 平面,我想将整个平面划分为相等大小的网格(方形网格).该网格显然是不可见的,但用于将轨迹划分为子段.每当轨迹与网格线相交时,它就会在那里被分段并成为带有new_id的新子轨迹.
我已经包含了一个简单的手工图表,以明确我的期望.
可以看出轨迹如何在网格线的交叉点处被划分,并且这些段中的每一个都具有新的唯一id.
我正在研究Python,并寻找一些python实现链接,建议,算法,甚至是伪代码.
如果有任何不清楚的地方,请告诉我.
UPDATE
为了将平面划分为网格,单元索引的完成如下:
#finding cell id for each coordinate
#cellid = (coord / cellSize).astype(int)
cellid = (coord / 0.5).astype(int)
cellid
Out[] : array([[1, 1],
[3, 1],
[4, 2],
[4, 4],
[5, 5],
[6, 5]])
#Getting x-cell id and y-cell id separately
x_cellid = cellid[:,0]
y_cellid = cellid[:,1]
#finding total number of cells
xmax = df.xcoord.max()
xmin = df.xcoord.min()
ymax = df.ycoord.max()
ymin = df.ycoord.min()
no_of_xcells = math.floor((xmax-xmin)/ 0.5)
no_of_ycells …Run Code Online (Sandbox Code Playgroud)