2013-07-22 2 views
0

3D에서 선의 점에 대한 x, y 좌표가 있고 파이썬을 사용하여이 z 좌표를 가져와야하는 경우 어떻게해야합니까 ?? 3D에서 선의 시작점 (x1, y1, z1)과 끝점 (x2, y2, z2)이 있으므로 어떤 제안이라도 제발 ???파이썬을 사용하여 3d에서 선의 점의 z 좌표

+1

'x1 == x2'와'y1 == y2'를 어떻게 처리합니까? – 6502

+4

이것은 더 많은 수학 질문입니다. 스택 교환에 대한 다른 포럼이 있습니다. http://math.stackexchange.com – nio

답변

3

쉽게 설치 선의 파라 메트릭 식 수

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

따라서 주어진 (X, Y)는 t이 방정식의 그래서

x = x1 + (x2 - x1)*t 

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

또는

이제 t을 알고

, 당신은 z을 찾을 수 있습니다

z = z1 + (z2 - z1)*t 

을 그래서 파이썬은 다음과 같습니다

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

를 당신 만의 X 또는 Y 값 중 하나를 알 필요가 없습니다 양자 모두. 당신은 X 값,이 경우 방정식은 다음과 같습니다이 사용

((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 
+0

x2 - x1이 0 일 때 어떻게됩니까? – jh314

+0

내가 줄을 주요 축과 평행하게 놓았는지 잊어 버린 것을 알게되었을 때 이미 응답을 얻었으므로 내 것을 그대로두고 올바른 것으로 선택하게했습니다. – scohe001

관련 문제