求四点的交点(两线段的交点)

1、根据四点直接计算出交点坐标:

def calPoint(pt1, pt2, imgShape):
    pt11X = pt1[0]
    pt11Y = pt1[1]
    pt12X = pt1[2]
    pt12Y = pt1[3]
    
    pt21X = pt2[0]
    pt21Y = pt2[1]
    pt22X = pt2[2]
    pt22Y = pt2[3]
    
    tmpDen = (pt12Y-pt11Y)*(pt22X-pt21X) - (pt12X-pt11X)*(pt22Y-pt21Y)
    tmpMol1 = pt21Y*pt22X - pt21X*pt22Y
    tmpMol2 = pt11Y*pt12X - pt11X*pt12Y
    
    ptX = ((pt21X-pt22X)*tmpMol2 - (pt11X-pt12X)*tmpMol1)/tmpDen
    ptY = ((pt21Y-pt22Y)*tmpMol2 - (pt11Y-pt12Y)*tmpMol1)/tmpDen
    
    if ptX < 0:
        ptX = 0
    elif ptX > imgShape[1]:
        ptX = imgShape[1]
        
    if ptY < 0:
        ptY = 0
    elif ptY > imgShape[0]:
        ptY = imgShape[0]   
    ptSize = ptY*imgShape[1] + ptX
    return [ptX, ptY, ptSize]

2、先分别计算线段的直线方程,然后根据两线段的直线方程求交点:

def calPoint1(pt1, pt2, imgShape):
    temp = (pt1[0] - pt1[2])*1.0
    if abs(temp) == 0.0:
        temp = 0.0001
    slope1 = (pt1[1]-pt1[3])/temp
    
    temp = (pt2[0] - pt2[2])*1.0
    if abs(temp) == 0.0:
        temp = 0.0001
    slope2 = (pt2[1]-pt2[3])/temp
    
    temp = slope2-slope1
    if abs(temp) == 0.0:
        temp = 0.0001
    ptX = (pt1[1] - pt2[1] + slope2*pt2[0] - slope1*pt1[0])/temp
    ptY = slope1*(ptX-pt1[0]) + pt1[1]
    
    return [ptX, ptY]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值