-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvector.py
60 lines (46 loc) · 1.47 KB
/
vector.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from proyeccion.wireframe import Wireframe
from proyeccion.wireframe import Edge
from proyeccion import wireframeDisplay
class Vector:
#clase de manejo de operaciones entre vectores.
def __init__(self, componentes):
self.i = componentes[0]
self.j = componentes[1]
self.k = componentes[2]
def getTuple(self):
return (self.i, self.j, self.k)
def __str__(self):
return "({}i, {}j, {}k)".format(self.i, self.j, self.k)
def to_wireframe(self):
wf = Wireframe()
wf.addNodes([(0, 0, 0), (self.i* 10, self.j * 10, -self.k * 10)])
wf.addEdges([(0, 1)])
return wf
def from_componentes(self, componentes):
self.i = componentes[0]
self.j = componentes[1]
self.k = componentes[2]
def sumar(self, vector):
vectorSuma = Vector([0, 0, 0])
vectorSuma.i = self.i + vector.i
vectorSuma.j = self.j + vector.j
vectorSuma.k = self.k + vector.k
return vectorSuma
def restar(self, vector):
vectorResta = Vector([0, 0, 0])
vectorResta.i = self.i - vector.i
vectorResta.j = self.j - vector.j
vectorResta.k = self.k - vector.k
return vectorResta
#no se grafica porque no produce vector
def producto_punto(self, vector):
sumatoria = 0
sumatoria += self.i * vector.i
sumatoria += self.j * vector.j
sumatoria += self.k * vector.k
return sumatoria
def producto_cruz(self, vector):
i = (self.j * vector.k) - (self.k * vector.j)
j = - ((self.i * vector.k) - (self.k * vector.i))
k = (self.i * vector.j) - (self.j * vector.i)
return Vector([i, j, k])