Ćwiczenia
Wektory 2D
Struktura wektora i podstawowe metody:
- Zimplementuj strukturę
Vec2D
reprezentującą dwuwymiarowy wektor . - Zdefiniuj metodę pozwalającą na czytelne wypisanie wektora na konsolę.
- Dodaj do wektora metodę fabryczną dla wektora jednostkowego.
- Napisz metodą sprawdzającą czy dwa wektory są równe.
Operacje na wektorach (operatory matematyczne):
- Napisz podstawowe operatory dla działań na wektorach: dodawanie, odejmowanie, mnożenie wektora przez liczbę oraz iloczyn skalarny. Dla podstawowych operatorów wykorzystaj predefiniowane cechy (
std::ops::Add
,std::ops::Sub
). Możesz wykorzystać następujący fragment kodu:use std::ops::{Add, Sub}; impl Add for Vec2D { type Output = Self; // Output describes the resulting type after applying the + operator. // Self describes the current type, here it means Vec2D fn add(self, other: Vec2D) -> Self { todo!(); } } impl Sub for Vec2D { type Output = Self; fn sub(self, other: Vec2D) -> Self { todo!(); } }
- Napisz kod prezentujacy działania na wektorach.
Więcej na temat cech operatorów znajdziesz w:
- oficjalnej dokumentacji Rusta: https://doc.rust-lang.org/core/ops/
- przykładach: https://doc.rust-lang.org/rust-by-example/trait/ops.html
Statek kosmiczny
Utwórz model statku kosmicznego, poruszającego się po planszy 2D, posiadającego swoje położenie (punkt na płaszczyśnie w przestrzeni liczb rzeczywistych oraz kierunek).
Zaimplementuj metody, które umożliwią
- obrót statku o zadany kąt,
- przesunięcie statku w aktualnym kierunku, o dany wektor,
- zaprezentowanie bieżącej pozycji,
- obliczenie odległości między statkiem a zadanym punktem,
- obliczenie odległości między dwoma statkami.