1.4 KiB
Executable File
Aufgabe 2: Vektor
In dieser Aufgabe soll ein einfacher, generischer Vektor-Typ erstellt werden.
Wieder soll eine Library-Crate als Cargo-Projekt angelegt werden und im tests
Untermodul sollen ein paar kurze Unittests die eigentliche Funktionalität
testen.
Der Datentyp soll Vector2
heißen und besteht aus einer x- und y-Koordinate.
Der Typ dieser Koordinaten ist jedoch generisch und kann grundsätzlich erstmal
alles sein. Neben den expliziten Anforderungen in a) und b) kann und/oder
muss Vector2
noch weitere Traits implementieren, solange das möglich ist.
a) Konstruktor-Funktionen
Wir möchten vier Konstruktor-Funktionen zu Vector2
hinzufügen:
new(x, y)
: bekommt beide Koordinaten als Parameterorigin()
: Vektor am Nullpunkt (beide Koordinaten 0)unit_x()
: Ein Einheitsvektor mit x=1unit_y()
: Ein Einheitsvektor mit y=1
Um diese Funktionen implementieren zu können, greifen wir auf schon vorhandene
Traits zu. Diese finden wir in der Crate num-traits
, die es wie gewohnt auf
crates.io gibt. Von dieser externen Bibliothek müsst ihr euch passende Traits,
die ihr nutzen wollt/müsst, aussuchen (wir sind nur an den Traits der
Bibliothek interessiert!).
b) Operatoren überladen
Für den Vektor soll der +
und *
Operator überladen werden (wenn dies
möglich ist).
Dabei ist das eine natürlich die Vektoraddition (also Vektor + Vektor), das
andere ist die Skalarmultiplikation (also Vektor * Skalar).