Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.17 KB | None | 0 0
  1.  
  2. from sympy import Circle, Point, Line, sqrt
  3. import numpy as np
  4.  
  5. def solve4Points(pointA, pointB, pointC, pointD, distA, distB, distC, distD):
  6.     #build linear equation matrix
  7.     matrix= []
  8.     matrix.append([pointB.x-pointA.x, pointB.y-pointA.y, pointB.z-pointA.z])
  9.     matrix.append([pointC.x-pointA.x, pointC.y-pointA.y, pointC.z-pointA.z])
  10.     matrix.append([pointD.x-pointA.x, pointD.y-pointA.y, pointD.z-pointA.z])
  11.     a = np.array(matrix, dtype='float')
  12.    
  13.     vect1 = -(distB**2-distA**2 + pointA.dot(pointA) - pointB.dot(pointB))/2
  14.     vect2 = -(distC**2-distA**2 + pointA.dot(pointA) - pointC.dot(pointC))/2
  15.     vect3 = -(distD**2-distA**2 + pointA.dot(pointA) - pointD.dot(pointD))/2
  16.     vector = [vect1, vect2, vect3]
  17.     b = np.array(vector, dtype='float')
  18.     x = np.linalg.solve(a,b)
  19.  
  20.     return Point(x[0],x[1], x[2])
  21.  
  22. pointA = Point(1,2,3)
  23. pointB = Point(5,2,5)
  24. pointC = Point(2,5,2)
  25. pointD = Point(0,0,0)
  26.  
  27. pointE = Point(8,8,8)
  28. distA = pointE.distance(pointA)
  29. distB = pointE.distance(pointB)
  30. distC = pointE.distance(pointC)
  31. distD = pointE.distance(pointD)
  32. result = solve4Points(pointA,pointB,pointC,pointD,distA,distB,distC,distD)
  33.  
  34. if result.distance(pointE) == 0:
  35.     print("it works!!!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement