Een reële vector in de drie-dimensionale ruimte wordt gekenmerkt door drie reële getallen (type float
).
Programmeer volgende methoden in de klasse Vector3D
:
Vector3D
aan te maken. De constructor heeft als argumenten de x-, y- en z-coöordinaat van de vector
x
, y
en z
)
abs(vector)
de norm van de vector oplevert
*
: het inwendig product van 2 vectoren (resultaat is een reëel getal)
+
: de som van de 2 vectoren (resultaat is een Vector3D
)
-
: het verschil van de 2 vectoren (resultaat is een Vector3D
)
@
: het kruisproduct van de 2 vectoren (resultaat is een Vector3D
). Deze binaire operator wordt in Python
vertaald naar de methode-oproep __matmul__(self, other)
; tip: gebruik de methode np.cross()
__repr__()
__str__()
die volgende gedaante levert :
[x,y,z]
, dus alle componenten, gescheiden door komma's, zonder spaties en omringd door vierkante haakjes; gebruik het formaat
%f
voor het afdrukken van de componenten van de vector
v = Vector3D(1.0, 0.0, 0.0) print(v.x) # 1.0 print(v.y) # 0.0 print(v.z) # 0.0 print(abs(v)) # 1.0 v1 = eval(repr(v)) print(v1.x == v.x) # True print(v1.y == v.y) # True print(v1.z == v.z) # True w = Vector3D(0.0, 1.0, 0.0) print(str(v + w)) # [1.000000,1.000000,0.000000] print(str(v - w)) # [1.000000,-1.000000,0.000000] print(v*w) # 0.0 print(str(v @ w)) # [0.000000,0.000000,1.000000] print(str(w @ v)) # [0.000000,0.000000,-1.000000]