题解 | 两直线交点

两直线交点

https://www.nowcoder.com/practice/b14130882e704fd6aa57f8762ae17bac

class Point:
    def __init__(self, x=0.0, y=0.0):
        self.x = x
        self.y = y


class Line:
    def __init__(self, point_a=None, point_b=None):
        self.point_A = point_a if point_a is not None else Point()
        self.point_B = point_b if point_b is not None else Point()

def fun(l):
    if l.point_A.x==l.point_B.x:
        return  1,0,-l.point_A.x
    m=(l.point_B.y-l.point_A.y)/(l.point_B.x-l.point_A.x)
    return m, -1, l.point_A.y-m*l.point_A.x

def find_meeting_point(line_A, line_B):
    # TODO: 在这里输入你的代码,求直线 line_A 与 line_B 的交点
    a1,b1,c1=fun(line_A)
    a2,b2,c2=fun(line_B)
    if a1==a2 or b1==b2==0:
        return Point(-1, -1)
    x=(c2-c1)/(a1-a2)
    y=a2*x+c2 if b1 else a1*x+c2
    return Point(round(x,6),round(y,6))
    


def main():
    data = list(map(float, input().split()))
    data.extend(list(map(float, input().split())))
    A = Point(data[0], data[1])
    B = Point(data[2], data[3])
    C = Point(data[4], data[5])
    D = Point(data[6], data[7])
    AB = Line(A, B)
    CD = Line(C, D)
    ans = find_meeting_point(AB, CD)
    print(f"{ans.x:.6f} {ans.y:.6f}")


if __name__ == "__main__":
    main()

全部评论

相关推荐

紫色心情:第二页的内容感觉没啥用,要不都删了吧,有四六级把四六级写上,简历写一页就好了。项目感觉写的很好耶,要不再压缩压缩,突出亮点。还有项目放上面,专业技能放下面好一些。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务