Added more math functionsto the vectors and matrix classes.
This commit is contained in:
+24
@@ -1,3 +1,5 @@
|
||||
import math
|
||||
|
||||
class Vector2d:
|
||||
def __init__(self, x, y):
|
||||
self.points = [x, y]
|
||||
@@ -23,6 +25,9 @@ class Vector2d:
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
self.points[key] = value
|
||||
|
||||
#def get_normalized_form(self):
|
||||
# return Vector3d(self.x / 2, self.y / 2, self.z / 2)
|
||||
|
||||
class Vector3d(Vector2d):
|
||||
def __init__(self, x, y, z):
|
||||
@@ -42,6 +47,22 @@ class Vector3d(Vector2d):
|
||||
# Returns a scalar that defines how similar two
|
||||
# vectors are to one another.
|
||||
return self.x * vector3d.x + self.y * vector3d.y + self.z * vector3d.z
|
||||
|
||||
def vector_3d_length(self):
|
||||
return math.sqrt(self.dot_product(self))
|
||||
|
||||
def subtract_3d(self, vector3d):
|
||||
return Vector3d(self.x - vector3d.x, self.y - vector3d.y, self.z - vector3d.z)
|
||||
|
||||
def add_3d(self, vector3d):
|
||||
return Vector3d(self.x + vector3d.x, self.y + vector3d.y, self.z + vector3d.z)
|
||||
|
||||
def divide_3d(self, value):
|
||||
return Vector3d(self.x / value, self.y / value, self.z / value)
|
||||
|
||||
def get_normalized_form(self):
|
||||
length = self.vector_3d_length()
|
||||
return Vector3d(self.x / length, self.y / length, self.z / length)
|
||||
|
||||
@property
|
||||
def z(self):
|
||||
@@ -62,3 +83,6 @@ class Vector4d(Vector3d):
|
||||
@w.setter
|
||||
def w(self, value):
|
||||
self.points[3] = value
|
||||
|
||||
#def get_normalized_form(self):
|
||||
# return Vector3d(self.x / 4, self.y / 4, self.z / 4)
|
||||
|
||||
Reference in New Issue
Block a user