Programmieren einer Linie und Fläche



  • Hallo ihr potenziellen Helfer!
    ich weiss noch nicht mal ob das hier hingehört, aber es hat mit Mathe und mit Programmieren zu tun: ich muss nämlich ohne viel(!) Ahnung zu haben einen Algorithmus programmieren. 🙂

    Also wie definiere ich mir sinnvoll eine Gerade mit C++? Habe einen Punkt und die Steigung gegeben und ich muss im Laufe des Algos immer wieder überprüfen ob ein andere Punkt auf dieser Linie liegt oder nicht.
    Ich könnte natürlich beider separat speichern, wollte aber mal fragen ob es nicht vielleicht was vordefinierte in der STL gibt.

    Mein zweites und wichtigeres Problem ist das ich eine konvexe Fläche (definiert durch ein paar Punkte) habe und immer wieder prüfen muss ob ein Punkt in dieser Fläche liegt oder nicht. Und wenn ja muss ich die Fläche auch noch verändern.
    Irgendwie habe ich im Moment keine Ahnung wie ich das umsetzen soll. 😞
    Hoffentlich habt ihr da eine Idee...



  • Für Linien gibt's nix fertige. Aber speicher die doch einfach so, wie Du vorgeschlagen hast.

    Einfach ne Klasse Linie mit Steigung und Punkt. Die könnte auch gleich ne Methode contains kriegen, die einen Punkt entgegennimmt und prüft, ob der draufliegt (einfach in die Geradengleichung einsetzen und nachschaun ob sie erfüllt ist).

    Die konvexe Fläche kannst auch beschreiben als Schnitt von Halbräumen. Berechne die Geraden, die diese Halbräume begrenzen. Nun mußte nur noch prüfen, ob Dein Punkt in jedem dieser Halbräume liegt (also auf der richtigen Seite Deiner begrenzenden Geraden). Ist das bei allen Geraden der Fall, so liegt der Punkt im Inneren. Sonst nicht.


Anmelden zum Antworten