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