Normalisieren - print und pdb erstmal auskommentiert
This commit is contained in:
111
vector.py
111
vector.py
@@ -3,58 +3,58 @@ from math import sqrt
|
||||
import pdb
|
||||
|
||||
class Vector(object):
|
||||
def __init__(self, coordinates):
|
||||
try:
|
||||
if not coordinates:
|
||||
raise ValueError
|
||||
self.coordinates = tuple(coordinates)
|
||||
self.dimension = len(coordinates)
|
||||
|
||||
except ValueError:
|
||||
raise ValueError('Die Koordinaten dürfen nicht leer sein')
|
||||
|
||||
except TypeError:
|
||||
raise TypeError('Die Koordinaten müssen iterierbar sein')
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return 'Vector: {}'.format(self.coordinates)
|
||||
|
||||
|
||||
def __eq__(self, v):
|
||||
return self.coordinates == v.coordinates
|
||||
|
||||
#def plus(self,v):
|
||||
# new_coordinates = [x+y for x,y in zip(self.coordinates, v.coordinates)]
|
||||
# return Vector(new_coordinates)
|
||||
|
||||
def plus(self,v):
|
||||
new_coordinates =[]
|
||||
n = len(self.coordinates)
|
||||
for i in range(n):
|
||||
new_coordinates.append(self.coordinates[i] + v.coordinates[i])
|
||||
|
||||
def minus(self,v):
|
||||
new_coordinates = [x-y for x,y in zip(self.coordinates, v.coordinates)]
|
||||
return Vector(new_coordinates)
|
||||
|
||||
def times_scalar(self, c):
|
||||
new_coordinates = [c*x for x in self.coordinates]
|
||||
return Vector(new_coordinates)
|
||||
|
||||
def magnitude(self):
|
||||
#Länge
|
||||
coordinates_squared = [x**2 for x in self.coordinates]
|
||||
pdb.set_trace()
|
||||
return sqrt(sum(coordinates_squared))
|
||||
|
||||
def normalized(self):
|
||||
try:
|
||||
magnitude = self.magnitude()
|
||||
return self.times_scalar(1./magnitude)
|
||||
except ZeroDivisonError:
|
||||
raise Exception('Ein Null-Vektor kann nicht normalisiert werden')
|
||||
|
||||
def __init__(self, coordinates):
|
||||
try:
|
||||
if not coordinates:
|
||||
raise ValueError
|
||||
self.coordinates = tuple(coordinates)
|
||||
self.dimension = len(coordinates)
|
||||
|
||||
except ValueError:
|
||||
raise ValueError('Die Koordinaten dürfen nicht leer sein')
|
||||
|
||||
except TypeError:
|
||||
raise TypeError('Die Koordinaten müssen iterierbar sein')
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return 'Vector: {}'.format(self.coordinates)
|
||||
|
||||
|
||||
def __eq__(self, v):
|
||||
return self.coordinates == v.coordinates
|
||||
|
||||
#def plus(self,v):
|
||||
# new_coordinates = [x+y for x,y in zip(self.coordinates, v.coordinates)]
|
||||
# return Vector(new_coordinates)
|
||||
|
||||
def plus(self,v):
|
||||
new_coordinates =[]
|
||||
n = len(self.coordinates)
|
||||
for i in range(n):
|
||||
new_coordinates.append(self.coordinates[i] + v.coordinates[i])
|
||||
|
||||
def minus(self,v):
|
||||
new_coordinates = [x-y for x,y in zip(self.coordinates, v.coordinates)]
|
||||
return Vector(new_coordinates)
|
||||
|
||||
def times_scalar(self, c):
|
||||
new_coordinates = [c*x for x in self.coordinates]
|
||||
return Vector(new_coordinates)
|
||||
|
||||
def magnitude(self):
|
||||
#Länge
|
||||
coordinates_squared = [x**2 for x in self.coordinates]
|
||||
#pdb.set_trace()
|
||||
return sqrt(sum(coordinates_squared))
|
||||
|
||||
def normalized(self):
|
||||
try:
|
||||
magnitude = self.magnitude()
|
||||
return self.times_scalar(1./magnitude)
|
||||
except ZeroDivisonError:
|
||||
raise Exception('Ein Null-Vektor kann nicht normalisiert werden')
|
||||
|
||||
# Tests
|
||||
|
||||
vektor_1 = Vector([1,2,3])
|
||||
@@ -64,7 +64,7 @@ vektor_2 = Vector([1,2,3])
|
||||
vektor_3 = Vector([-1,2,3])
|
||||
|
||||
print (vektor_1 == vektor_2)
|
||||
print (vektor_2 == vektor_3)
|
||||
print (vektor_2 == vektor_3)
|
||||
|
||||
print (vektor_1.plus(vektor_2))
|
||||
|
||||
@@ -72,4 +72,7 @@ print (vektor_2.minus(vektor_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())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user