Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:csharp_oop [2025-05-12 10:58] – sca | talit:csharp_oop [2025-05-18 13:30] (aktuell) – [Auftrag im Detail] sca | ||
---|---|---|---|
Zeile 35: | Zeile 35: | ||
1. Die beiden Rechenmethoden vom letzten Punkt sollen können nur Funktionieren, | 1. Die beiden Rechenmethoden vom letzten Punkt sollen können nur Funktionieren, | ||
1. Nun wollen wir aber nicht immer `Vector.Sub(v1, | 1. Nun wollen wir aber nicht immer `Vector.Sub(v1, | ||
- | 1. Aktuell gibt der Befehl `System.Console.WriteLine(v); | + | 1. Aktuell gibt der Befehl `System.Console.WriteLine(v); |
1. Über eine Eigenschaft soll von einem Vektor der zugehörige **Einheitsvektor** ausgegeben werden: `v.UnitVector`. Dieser Einheitsvektor soll *selbst wieder vom Typ Vector* sein! Um von einem Vektor den zugehörigen Einheitsvektor zu erhalten, dividiert man jede Komponente des Vektors durch die Länge des gesamten Vektors. *Tipp:* Überlege dir gut, *wo* genau der Einheitsvektor berechnet werden soll!\\ \\ | 1. Über eine Eigenschaft soll von einem Vektor der zugehörige **Einheitsvektor** ausgegeben werden: `v.UnitVector`. Dieser Einheitsvektor soll *selbst wieder vom Typ Vector* sein! Um von einem Vektor den zugehörigen Einheitsvektor zu erhalten, dividiert man jede Komponente des Vektors durch die Länge des gesamten Vektors. *Tipp:* Überlege dir gut, *wo* genau der Einheitsvektor berechnet werden soll!\\ \\ | ||
+ | 1. Es ist etwas umständlich, | ||
+ | 1. Erweitere nun deine Klasse beliebig. Hier einige Vorschläge: | ||
+ | 1. Weiter Operationen: | ||
+ | 1. `DotProduct` | ||
+ | 1. `ScalarMultiplication` (überladen, | ||
+ | 1. `VectorProduct` (nur für 3D Vektoren) | ||
+ | 1. Winkel zwischen zwei Vektoren: `AngleInRad` , `AngleInRad` | ||
+ | 1. Zwei Vektoren vergleichen: | ||
+ | 1. **Operatoren überladen**: | ||
+ | 1. **Optional: | ||
- | **Neue Features:** | + | <nodisp 2> |
- | 1. Ein bestehender Vektor soll überschrieben werden können, aber nur, wenn er die //gleiche Dimension// wie der bestehende hat. Dazu soll man einfach `v.Components` neu setzen können. Dies geschieht im //setter// der Components-Eigenschaft. | + | ++++Weiteres| |
- | + | ||
- | ===== Zusatzaufgaben ===== | + | |
- | + | ||
- | 1. Für 3er Vektoren soll nun auch das **Vektorprodukt** berechnet werden können. [[https:// | + | |
- | 1. Füge nun auch die Skalarmultiplikation hinzu. Dort wird ein Vektor mit einer reellen Zahl gestreckt oder gestaucht. Der Operator `*` soll so überladen werden, dass `v1*v2` das Skalarprodukt ergibt und (s sei eine Zahl, kein Vektor) `v*s` oder `s*v` die Skalarmultiplikation.\\ \\ | + | |
- | 1. Erweitere deine Klasse mit weiteren sinnvollen Methoden usw.\\ \\ | + | |
- | 1. Falls du sehr motiviert bist, könntest du eine Klasse *Matrix* definieren, mit der man Matrizen-Rechnungen durchführen kann. | + | |
===== 2D-Drawing ===== | ===== 2D-Drawing ===== | ||
Zeile 113: | Zeile 116: | ||
* Scene untersucht für alle möglichen Paare von Körpern, ob sie sich berühren und führt die Kollision aus. | * Scene untersucht für alle möglichen Paare von Körpern, ob sie sich berühren und führt die Kollision aus. | ||
+ | ++++ | ||
+ | |||
+ | </ |