如何使用numpy计算两条线段之间的交点?
在代码中,我有segment1 = ((x1,y1),(x2,y2))
和segment2 = ((x1,y1),(x2,y2))
。注意segment1
不等于segment2
。因此,在我的代码中,我还一直在计算斜率和y截距,如果可以避免,那将是很好的选择,但我不知道该怎么做。
我一直在用我在Python中编写的函数使用Cramer规则,但我想找到一种更快的方法。
直接从http://www.cs.mun.ca/~rod/2500/notes/numpy-arrays/numpy-
arrays.html
失窃
#
# line segment intersection using vectors
# see Computer Graphics by F.S. Hill
#
from numpy import *
def perp( a ) :
b = empty_like(a)
b[0] = -a[1]
b[1] = a[0]
return b
# line segment a given by endpoints a1, a2
# line segment b given by endpoints b1, b2
# return
def seg_intersect(a1,a2, b1,b2) :
da = a2-a1
db = b2-b1
dp = a1-b1
dap = perp(da)
denom = dot( dap, db)
num = dot( dap, dp )
return (num / denom.astype(float))*db + b1
p1 = array( [0.0, 0.0] )
p2 = array( [1.0, 0.0] )
p3 = array( [4.0, -5.0] )
p4 = array( [4.0, 2.0] )
print seg_intersect( p1,p2, p3,p4)
p1 = array( [2.0, 2.0] )
p2 = array( [4.0, 3.0] )
p3 = array( [6.0, 0.0] )
p4 = array( [6.0, 3.0] )
print seg_intersect( p1,p2, p3,p4)
概述 Makeblock直线导轨滑块连接器A作为直线运动引导机器人的必要部分。 它具有平滑的连接性和灵活性,适用于多个直线运动结构。 参数 材质:6061铝 长度:40mm 宽度:40mm 高度:13mm
问题内容: 同事一直在吹捧Maven的奇迹及其神奇的依赖关系,但是我发现它在我认为是显而易见的用途上失败了。 假设我有一个带有主POM的根文件夹。 然后在我下面有一些项目,分别称为A和B B需要A,因此B文件夹中的POM中具有适当的依赖项 现在,回到根文件夹中的配置文件中,我指定要构建B。 当我执行通常的mvn全新安装时,由于未构建A而失败。 我的朋友告诉我,我必须在根目录的主配置文件中同时指定A
新手警报。 我正在尝试在Vertx中编写一个简单的模块,它每10秒轮询一次数据库(PostGres)并将结果推送给客户端。我正在考虑将阻塞代码(通过JDBC查询数据库)限制在工作垂直中,上面的其余层是完全非阻塞和异步的。 此模块将打包为一个jar,并分发到不同的应用程序(通常是webapps),这些应用程序可以通过javascript桥订阅事件总线。 我这里的问题是在集群环境中,我有5个运行ver
SVG 直线 - <line> <line> 元素是用来创建一个直线: 下面是SVG代码: <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <line x1="0" y1="0" x2="200" y2="200" style="stroke:rgb(255,0,0);stroke-width:2"/> </svg> 对于Ope
直线图是用直线将一系列的数据点连接的图表,直线图经常用来展现随着时间变化的数据。 图4-1 Highcharts 基础直线图 直线图相关的配置参考 API 文档: 直线图配置:针对当前数据列有效 直线图数据列配置 :针对当前页面的所有直线数据列有效 直线图特性 阶梯型直线图 对应的只需要在数据列里配置 step 属性即可。 plotOptions: { series: {
问题内容: 我有两个数组,一个是形状,另一个是shape ,所以实际上是两个以矩阵为元素的数组。现在,我想计算并获得在两个数组中都重叠的所有元素(以形式)。使用普通的for循环,这是减慢速度的方法,因此我尝试使用numpys intersect1d方法进行尝试,但我不知道如何将其应用于此类数组。 问题答案: 使用关于唯一行的此问题中的方法) 请注意,使用浮点数是不安全的,因为它将导致不等于