mirror of
https://github.com/LukasKalbertodt/programmieren-in-rust.git
synced 2025-06-29 00:07:31 +02:00
Rename sheet folders to assure proper sorting
This commit is contained in:
36
aufgaben/sheet06/task2/README.md
Executable file
36
aufgaben/sheet06/task2/README.md
Executable file
@ -0,0 +1,36 @@
|
||||
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 Parameter
|
||||
- `origin()`: Vektor am Nullpunkt (beide Koordinaten 0)
|
||||
- `unit_x()`: Ein Einheitsvektor mit x=1
|
||||
- `unit_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).
|
Reference in New Issue
Block a user