Normalisieren - print und pdb erstmal auskommentiert

This commit is contained in:
2020-11-07 09:45:18 +01:00
parent aa142dbcf0
commit 403d24706f

111
vector.py
View File

@@ -3,58 +3,58 @@ from math import sqrt
import pdb import pdb
class Vector(object): class Vector(object):
def __init__(self, coordinates): def __init__(self, coordinates):
try: try:
if not coordinates: if not coordinates:
raise ValueError raise ValueError
self.coordinates = tuple(coordinates) self.coordinates = tuple(coordinates)
self.dimension = len(coordinates) self.dimension = len(coordinates)
except ValueError: except ValueError:
raise ValueError('Die Koordinaten dürfen nicht leer sein') raise ValueError('Die Koordinaten dürfen nicht leer sein')
except TypeError: except TypeError:
raise TypeError('Die Koordinaten müssen iterierbar sein') raise TypeError('Die Koordinaten müssen iterierbar sein')
def __str__(self): def __str__(self):
return 'Vector: {}'.format(self.coordinates) return 'Vector: {}'.format(self.coordinates)
def __eq__(self, v): def __eq__(self, v):
return self.coordinates == v.coordinates return self.coordinates == v.coordinates
#def plus(self,v): #def plus(self,v):
# new_coordinates = [x+y for x,y in zip(self.coordinates, v.coordinates)] # new_coordinates = [x+y for x,y in zip(self.coordinates, v.coordinates)]
# return Vector(new_coordinates) # return Vector(new_coordinates)
def plus(self,v): def plus(self,v):
new_coordinates =[] new_coordinates =[]
n = len(self.coordinates) n = len(self.coordinates)
for i in range(n): for i in range(n):
new_coordinates.append(self.coordinates[i] + v.coordinates[i]) new_coordinates.append(self.coordinates[i] + v.coordinates[i])
def minus(self,v): def minus(self,v):
new_coordinates = [x-y for x,y in zip(self.coordinates, v.coordinates)] new_coordinates = [x-y for x,y in zip(self.coordinates, v.coordinates)]
return Vector(new_coordinates) return Vector(new_coordinates)
def times_scalar(self, c): def times_scalar(self, c):
new_coordinates = [c*x for x in self.coordinates] new_coordinates = [c*x for x in self.coordinates]
return Vector(new_coordinates) return Vector(new_coordinates)
def magnitude(self): def magnitude(self):
#Länge #Länge
coordinates_squared = [x**2 for x in self.coordinates] coordinates_squared = [x**2 for x in self.coordinates]
pdb.set_trace() #pdb.set_trace()
return sqrt(sum(coordinates_squared)) return sqrt(sum(coordinates_squared))
def normalized(self): def normalized(self):
try: try:
magnitude = self.magnitude() magnitude = self.magnitude()
return self.times_scalar(1./magnitude) return self.times_scalar(1./magnitude)
except ZeroDivisonError: except ZeroDivisonError:
raise Exception('Ein Null-Vektor kann nicht normalisiert werden') raise Exception('Ein Null-Vektor kann nicht normalisiert werden')
# Tests # Tests
vektor_1 = Vector([1,2,3]) vektor_1 = Vector([1,2,3])
@@ -64,7 +64,7 @@ vektor_2 = Vector([1,2,3])
vektor_3 = Vector([-1,2,3]) vektor_3 = Vector([-1,2,3])
print (vektor_1 == vektor_2) print (vektor_1 == vektor_2)
print (vektor_2 == vektor_3) print (vektor_2 == vektor_3)
print (vektor_1.plus(vektor_2)) print (vektor_1.plus(vektor_2))
@@ -72,4 +72,7 @@ print (vektor_2.minus(vektor_3))
print (vektor_3.times_scalar(3)) print (vektor_3.times_scalar(3))
print ("Magnitude -- Länge ", vektor_3.magnitude()) print ("Magnitude -- Länge ", vektor_3.magnitude())
print ("Normalisieren ", vektor_2.normalized())