Пересечение трех плоскостей
Я пытаюсь создать код python, который находит пересечение трех плоскостей, создавая уравнения плоскостей, затем используя правило Крамера для решения системы уравнений и, наконец, получая точку пересечения, если она существует.
Что я уже пробовал:
Я пытался использовать защиту fuvction, но я не знаю, как собрать все это вместе. Пожалуйста помочь
class Plane3D: def equation_plane(x1, y1, z1, x2, y2, z2, x3, y3, z3): a1 = x2 - x1 b1 = y2 - y1 c1 = z2 - z1 a2 = x3 - x1 b2 = y3 - y1 c2 = z3 - z1 a = b1 * c2 - b2 * c1 b = a2 * c1 - a1 * c2 c = a1 * b2 - b1 * a2 d = (- a * x1 - b * y1 - c * z1) print ("The equation of the plane is "), print (a, "x +" ,b, "y +" ,c, "z +" ,d, "= 0.") print (a) print(b) print(c) print(d) return equation_plane(x1, y1, z1, x2, y2, z2, x3, y3, z3) def cramers (self, p1, p2,p3): from numpy import linalg As=[[2,-1,5,1],[3,2,2,-6],[1,3,3,-1],[5,-2,-3,3]] Bs=[-3,-32,-47,49] Cs=[[2,-1,5,1],[3,2,2,-6],[1,3,3,-1],[5,-2,-3,3]] Xs=[] for i in range(0,len(B)): for j in range(0,len(B)): C[j][i]=B[j] if i>0: C[j][i-1]=A[j][i-1] X.append(round(linalg.det(C)/linalg.det(A),1)) return (X)
0x01AA
а) покажите, каковы ваши плоскости (либо координатная, либо параметрическая форма)
б) покажите вашему коду, как вы это сделали
В.) имейте в виду, что как только две плоскости параллельны (или, если быть достаточно точным, параллельны, например, для вычисления двойных чисел), решения не будет.
Воспользуйся Редактирование вопроса[^] чтобы улучшить ваш вопрос.
Member 14520123
класс Plane3D:
def equation_plane(x1, y1, z1, x2, y2, z2, x3, y3, z3):
a1 = x2 - x1
b1 = y2 - y1
c1 = z2 - z1
a2 = x3 - x1
b2 = y3 - y1
С2 = и Z3 - Z1 в
a = b1 * c2 - b2 * c1
b = a2 * c1 - a1 * c2
c = a1 * b2 - b1 * a2
d = (- a * x1 - b * y1 - c * z1)
print ("уравнение плоскости есть "),
выведите (a, "x +" ,b, "y +" ,c, "z +" ,d, "= 0.")
печать (а)
печать(b)
печать(c)
печать(d)
возврат equation_plane(x1, y1, z1, x2, y2, z2, x3, y3, z3)
def cramers (self, p1, p2,p3):
из numpy import linalg
Как=[[2,-1,5,1],[3,2,2,-6],[1,3,3,-1],[5,-2,-3,3]]
БС=[-3,-32,-47,49]
КС=[[2,-1,5,1],[3,2,2,-6],[1,3,3,-1],[5,-2,-3,3]]
Хз=[]
для i в диапазоне(0,len(B)):
для j в диапазоне(0,len(B)):
C[j][i]=B[j]
если я>0:
C[j][i-1]=A[j][i-1]
X. добавить(раунд(linalg.det(C)/linalg.det(A),1))
возврат (X)
Вот где я нахожусь я не знаю что делать дальше
MadMyche
Я отредактировал ваш вопрос, чтобы он содержал код