Uebung 05
This commit is contained in:
parent
9ec5cbf084
commit
4c00a2c0b1
20
uebung_05/exercise_01/exercise_01.py
Normal file
20
uebung_05/exercise_01/exercise_01.py
Normal file
@ -0,0 +1,20 @@
|
||||
class Ball:
|
||||
__diameter__ = 0.0
|
||||
|
||||
## Methods
|
||||
# Constructor
|
||||
def __init__(self, diameter = 1.0):
|
||||
self.__diameter__ = diameter
|
||||
pass
|
||||
|
||||
# a simple method
|
||||
def introduction(self):
|
||||
print(f"My diameter is {self.__diameter__:.3f}.")
|
||||
pass
|
||||
|
||||
# main code
|
||||
a = Ball()
|
||||
b = Ball(2.0)
|
||||
|
||||
a.introduction()
|
||||
b.introduction()
|
51
uebung_05/exercise_02/exercise_02.py
Normal file
51
uebung_05/exercise_02/exercise_02.py
Normal file
@ -0,0 +1,51 @@
|
||||
import numpy as np
|
||||
|
||||
class Ball:
|
||||
__diameter__ = 0.0
|
||||
|
||||
## Methods
|
||||
# Constructor
|
||||
def __init__(self, diameter = 1.0):
|
||||
self.__diameter__ = diameter
|
||||
pass
|
||||
|
||||
# a simple method
|
||||
def introduction(self):
|
||||
print(f"My diameter is {self.__diameter__:.3f}.")
|
||||
pass
|
||||
|
||||
# Getter
|
||||
def get_diameter(self):
|
||||
return self.__diameter__
|
||||
|
||||
# overload __add_ (+)
|
||||
def __add__(self, other):
|
||||
d1 = self.get_diameter()
|
||||
|
||||
if(isinstance(other, Ball)):
|
||||
d2 = other.get_diameter()
|
||||
combined_volume = 1/6 * np.pi * (d1**3 + d2**3)
|
||||
elif(isinstance(other, int) or isinstance(other, float)):
|
||||
combined_volume = 1/6 * np.pi*d1**3 + other
|
||||
else:
|
||||
raise ValueError("Invalid summand.")
|
||||
d_combined = np.power(6 * combined_volume / np.pi, 1/3)
|
||||
return Ball(d_combined)
|
||||
|
||||
# overload __radd__ (number + Ball)
|
||||
def __radd__(self, other):
|
||||
return self + other
|
||||
|
||||
# main code
|
||||
a = Ball()
|
||||
b = Ball(2.0)
|
||||
|
||||
c = a + b
|
||||
|
||||
d = a + 5
|
||||
e = 5 + a
|
||||
|
||||
a.introduction()
|
||||
b.introduction()
|
||||
c.introduction()
|
||||
d.introduction()
|
BIN
uebung_05/exercise_03/.exercise_03.py.swp
Normal file
BIN
uebung_05/exercise_03/.exercise_03.py.swp
Normal file
Binary file not shown.
65
uebung_05/exercise_03/:
Normal file
65
uebung_05/exercise_03/:
Normal file
@ -0,0 +1,65 @@
|
||||
import math
|
||||
|
||||
class Point:
|
||||
__x__ = 0.0
|
||||
__y__ = 0.0
|
||||
|
||||
def __init__(self, x = 0.0, y = 0.0):
|
||||
self.__x__ = x
|
||||
self.__y__ = y
|
||||
|
||||
def __str__(self):
|
||||
return f"({self.__x__:.3f},{self.__y__:.3f})"
|
||||
|
||||
def __neg__(self):
|
||||
return Point(-self.__x__, -self.__y__)
|
||||
|
||||
def __add__(self, other):
|
||||
x = 0.0
|
||||
y = 0.0
|
||||
|
||||
if isinstance(other, Point):
|
||||
return Point(self.__x__ + other.__x__, self.__y__ + other.__y__)
|
||||
elif isinstance(other, int) or isinstance(other, float):
|
||||
return Point(self.__x__ + other, self.__y__ + other)
|
||||
else:
|
||||
raise ValueError("Operand must be Point, int or float.")
|
||||
|
||||
def __radd__(self, other):
|
||||
return self + other
|
||||
|
||||
def __sub__(self, other):
|
||||
if isinstance(other, Point) or isinstance(other, int) or isinstance(other, float):
|
||||
return self + (-other)
|
||||
else:
|
||||
raise ValueError("Operand must be Point, int or float.")
|
||||
|
||||
def __rsub__(self, other):
|
||||
return self - other
|
||||
|
||||
def __mul__(self, other):
|
||||
if isinstance(other, Point):
|
||||
return Point(self.__x__ * other.__x__, self.__x__ * other.__y__)
|
||||
elif isinstance(other, int) or isinstance(other, float):
|
||||
return Point(self.__x__ * other, self.__x__ * other)
|
||||
else:
|
||||
raise ValueError("Operand must be Point, int or float.")
|
||||
|
||||
def __rmul__(self, other):
|
||||
return self * other
|
||||
|
||||
def rot(self, degree):
|
||||
x = math.cos(degree) * self.__x__ + math.sin(degree) * self.__y__
|
||||
y = -math.sin(degree) * self.__x__ + math.cos(degree) * self.__y__
|
||||
return Point(x, y)
|
||||
|
||||
def get_x(self):
|
||||
return self.__x__
|
||||
|
||||
def get_y(self):
|
||||
return self.__y__
|
||||
|
||||
p1 = Point()
|
||||
p2 = Point(1, 1)
|
||||
|
||||
print(p2.rot(math.pi * 2))
|
79
uebung_05/exercise_03/exercise_03.py
Normal file
79
uebung_05/exercise_03/exercise_03.py
Normal file
@ -0,0 +1,79 @@
|
||||
import math
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
class Point:
|
||||
__x__ = 0.0
|
||||
__y__ = 0.0
|
||||
|
||||
def __init__(self, x = 0.0, y = 0.0):
|
||||
self.__x__ = x
|
||||
self.__y__ = y
|
||||
|
||||
def __str__(self):
|
||||
return f"({self.__x__:.3f},{self.__y__:.3f})"
|
||||
|
||||
def __neg__(self):
|
||||
return Point(-self.__x__, -self.__y__)
|
||||
|
||||
def __add__(self, other):
|
||||
x = 0.0
|
||||
y = 0.0
|
||||
|
||||
if isinstance(other, Point):
|
||||
return Point(self.__x__ + other.__x__, self.__y__ + other.__y__)
|
||||
elif isinstance(other, int) or isinstance(other, float):
|
||||
return Point(self.__x__ + other, self.__y__ + other)
|
||||
else:
|
||||
raise ValueError("Operand must be Point, int or float.")
|
||||
|
||||
def __radd__(self, other):
|
||||
return self + other
|
||||
|
||||
def __sub__(self, other):
|
||||
if isinstance(other, Point) or isinstance(other, int) or isinstance(other, float):
|
||||
return self + (-other)
|
||||
else:
|
||||
raise ValueError("Operand must be Point, int or float.")
|
||||
|
||||
def __rsub__(self, other):
|
||||
return self - other
|
||||
|
||||
def __mul__(self, other):
|
||||
if isinstance(other, Point):
|
||||
return Point(self.__x__ * other.__x__, self.__x__ * other.__y__)
|
||||
elif isinstance(other, int) or isinstance(other, float):
|
||||
return Point(self.__x__ * other, self.__x__ * other)
|
||||
else:
|
||||
raise ValueError("Operand must be Point, int or float.")
|
||||
|
||||
def __rmul__(self, other):
|
||||
return self * other
|
||||
|
||||
def rot(self, degree):
|
||||
x = math.cos(degree) * self.__x__ + math.sin(degree) * self.__y__
|
||||
y = -math.sin(degree) * self.__x__ + math.cos(degree) * self.__y__
|
||||
return Point(x, y)
|
||||
|
||||
def get_x(self):
|
||||
return self.__x__
|
||||
|
||||
def get_y(self):
|
||||
return self.__y__
|
||||
|
||||
p1 = Point()
|
||||
p2 = Point(1, 1)
|
||||
p3 = Point (3, 2)
|
||||
p4 = 2 * p2 + p3 - 1
|
||||
p5 = p4.rot(math.pi / 2)
|
||||
|
||||
plt.plot(p1.get_x(), p1.get_y(), "orange", marker = "o")
|
||||
plt.plot(p2.get_x(), p2.get_y(), "green", marker = "o")
|
||||
plt.plot(p3.get_x(), p3.get_y(), "yellow", marker = "o")
|
||||
plt.plot(p4.get_x(), p4.get_y(), "purple", marker = "o")
|
||||
plt.plot(p5.get_x(), p5.get_y(), "purple", marker = "o")
|
||||
|
||||
plt.title("Points")
|
||||
plt.xlabel("x")
|
||||
plt.ylabel("y")
|
||||
|
||||
plt.show()
|
Loading…
Reference in New Issue
Block a user