35 lines
667 B
Python
35 lines
667 B
Python
|
class Point:
|
||
|
def __init__(self, x, y, z):
|
||
|
self.x = x
|
||
|
self.y = y
|
||
|
self.z = z
|
||
|
|
||
|
def __sub__(self, o):
|
||
|
return Point(self.x - o.x, self.y - o.y, self.z - o.z)
|
||
|
|
||
|
def __str__(self):
|
||
|
return f"({self.x}, {self.y}, {self.z})"
|
||
|
|
||
|
def cross(self, o):
|
||
|
x = self.y * o.z - self.z * o.y
|
||
|
y = self.z * o.x - self.x * o.z
|
||
|
z = self.x * o.y - self.y * o.x
|
||
|
return Point(x, y, z)
|
||
|
|
||
|
p0 = Point(1, 1, 0)
|
||
|
p1 = Point(0, 1, 1)
|
||
|
p2 = Point(1, 0, 1)
|
||
|
|
||
|
e1 = p1 - p0
|
||
|
print(e1)
|
||
|
|
||
|
e2 = p2 - p0
|
||
|
print(e2)
|
||
|
|
||
|
n = e1.cross(e2)
|
||
|
print(n)
|
||
|
|
||
|
# Find A, B, C and D
|
||
|
D = -(n.x * p0.x + n.y * p0.y + n.z * p0.z)
|
||
|
print(n.x, n.y, n.z, D)
|