当前位置: 首页 > 面试题库 >

块状和直线相交

杨飞飙
2023-03-14
问题内容

如何使用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方法进行尝试,但我不知道如何将其应用于此类数组。 问题答案: 使用关于唯一行的此问题中的方法) 请注意,使用浮点数是不安全的,因为它将导致不等于