使用python在3d中的一条点上的z坐标

时间:2013-07-22 17:35:14

标签: python math geometry

如果我有3D的在线点的x,y坐标,我需要使用python获得这个z坐标,我该怎么办?我有3D线的起点(x1,y1,z1)和终点(x2,y2,z2),所以有任何建议吗???

2 个答案:

答案 0 :(得分:4)

您可以轻松设置线的参数方程:

x = x1 + (x2 - x1)*t
y = y1 + (y2 - y1)*t
z = z1 + (z2 - z1)*t

所以给定a(x,y),求解t的这个等式:

x = x1 + (x2 - x1)*t

所以

t = (x - x1) / (x2 - x1)

t = (y - y1) / (y2 - y1)

现在您知道t,您可以找到z

z = z1 + (z2 - z1)*t

所以在Python中它将是:

def computeZ(p1,p2,x,y):
    x1,y1,z1 = p1
    x2,y2,z2 = p2

    if x2 - x1 != 0:
        t = (x - x1) / (x2 - x1)
    elif:
        t = (y - y1) / (y2 - y1)
    else:
        print "no unique z value exists"
        return 0

    return z1 + (z2 - z1)*t

答案 1 :(得分:1)

您只需要知道X或Y值,而不是两者。等式,如果你有一个X值,A将是:

((A - x1)*(z2 - z1)/(x2 - x1)) + z1

使用此功能,您可以插入两个初始点和一个x并获取新点,如下所示:

def get_points(p1, p2, x):
    x1, y1, z1 = p1
    x2, y2, z2 = p2

    new_z = ((x - x1)*(z2 - z1)/(x2 - x1)) + z1
    new_y = ((x - x1)*(y2 - y1)/(x2 - x1)) + y1

    new_p = (x, new_y, new_z)
    return new_p