首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python在3d中线上点的Z坐标

使用python在3d中线上点的Z坐标
EN

Stack Overflow用户
提问于 2013-07-23 01:35:14
回答 2查看 1.1K关注 0票数 0

如果我在3D中线上的一个点有x,y坐标,并且我需要使用python获得这个z坐标,我该怎么做呢?我有3D线条的起点(x1,y1,z1)和终点(x2,y2,z2),所以有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-23 01:43:03

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

代码语言:javascript
复制
x = x1 + (x2 - x1)*t
y = y1 + (y2 - y1)*t
z = z1 + (z2 - z1)*t

给定a (x,y),求解t的这个方程

代码语言:javascript
复制
x = x1 + (x2 - x1)*t

所以

代码语言:javascript
复制
t = (x - x1) / (x2 - x1)

代码语言:javascript
复制
t = (y - y1) / (y2 - y1)

现在您了解了t,可以找到z

代码语言:javascript
复制
z = z1 + (z2 - z1)*t

所以在Python中应该是:

代码语言:javascript
复制
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
票数 4
EN

Stack Overflow用户

发布于 2013-07-23 01:45:30

您只需要知道X或Y值之一,而不是两者都知道。这个方程,如果你有一个X值,A,将是:

代码语言:javascript
复制
((A - x1)*(z2 - z1)/(x2 - x1)) + z1

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17793844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档