Nachweisen, dass Punkt in Dreieck liegt

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Nachweisen, dass Punkt in Dreieck liegt

    Hi,

    ich habe gerade ein Mathe-Probeabitur von 2014 (Bayern) geschrieben.
    Die Lösungen sind soweit nachvollziehbar, nur in einem Punkt nicht. Ich suche also nicht nach irgendwelchen Algorithmen, um das programmatisch umzusetzen, sondern es geht lediglich um den mathematischen Nachweis auf dem Papier. Sonst hätte ich natürlich einfach den Punkt-In-Polygon-Test nach Jordan nehmen können. ^^

    Die Aufgabe lautet: "Begründen Sie, dass der Lichtstrahl auf dem dreieckigen Spiegel auftrifft." Der Lichtstrahl kommt von einem Quellpunkt und hat einen bestimmten Richtungsvektor, man kann also eine Gerade aufstellen. Das Dreieck liegt in einer Ebene.
    Deshalb habe ich einfach die Gerade mit der Ebene geschnitten und raus kam der Punkt R(1,5|1,5|1), welcher auch als Teilergebnis so angegeben ist. Jetzt soll man nachweisen, dass er speziell in diesem Dreieck liegt, also nicht nur generell in der Ebene.
    Das Dreieck hat die Punkte A(4|0|0), B(0|4|0) und C(0|0|4). Die Verbindungsvektoren habe ich bereits berechnet, da ich zuvor schon einen Flächeninhalt angeben musste.
    (kA, wie Punkte mit LaTeX gehen :P)

    Heraus kommt
    $\vec{AB}=\left(\begin{array}{c} -4 \\ 4 \\ 0 \end{array}\right)$
    ,
    $\vec{AC}=\left(\begin{array}{c} -4 \\ 0 \\ 4 \end{array}\right)$
    .
    Jetzt schreiben die in der Lösung, dass der Punkt
    $R$
    genau dann im Dreieck liegt, wenn
    $\vec{AR}=µ\vec{AB} + v\vec{AC}$
    mit
    $0<µ, v < 1$
    gilt. In meinen Augen ist das aber nicht richtig.
    $µ$
    und
    $v$
    dürften zusammen addiert in diesem Bereich liegen, also müssten kleiner als 1 sein, denn sonst würde ich ja ein Viereck beschreiben, oder? Angenommen ich wähle für beide Parameter den Wert 0.9, so addieren sich die Vektoren so auf, dass einer herauskommt, der außerhalb des Dreiecks liegt. Diese Halbierung kommt dabei ja zu kurz.
    Natürlich habe ich direkt nachgeschaut und das gefunden:



    (Quelle: http://matheplanet.com/matheplanet/nuke/html/uploads/6/5126_punktimDreieck.jpg)

    Würde man das jetzt z. B. mit 0,9 bei beiden Vektoren (
    $\vec{a}$
    und
    $\vec{b}$
    ) errechnen bzw. den Summenvektor bilden, dann würde der ja rechts außerhalb auf einen Punkt zeigen (wäre ja der Ortsvektor), der aber garantiert nicht im Dreieck liegt. Das nette Mitglied schrieb im entsprechenden Thread genau das dazu:



    Meine Theorie war jetzt, dass diese Schreibweise in der Lösung genau dies bedeutet. Allerdings bin ich nicht sicher, ob das so ist und das Komma dort von mir nur fehlinterpretiert wurde. Eindeutiger wäre es ja doch mit
    $0 < µ + v < 1$
    , oder?
    Zudem ist mir nicht klar, warum die 0 und 1 ausgeschlossen werden. Diese Punkte liegen doch ebenfalls noch im Dreieck und müssten doch eig. dazugehören, oder?

    Wäre nett, wenn Ihr mir hier weiterhelfen und erläutern könntet, ob meine Überlegung richtig ist, dass die zusammen max. 1 sein dürften. Also
    $ 0 ≤ µ + v ≤ 1$
    wäre meine Idee dazu gewesen. Lehrer kontaktieren ist leider nicht möglich und am Dienstag schreiben wir bereits Klausur.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade Wir hatten hier im letzten Jahr Deinen Thread, wo die Frage war, ob ein Punkt innerhalb eines Polygons liegt.
    Vielleicht etwas zu hochgestochen, aber funktioniert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja, daran hatte ich auch schon gedacht. ^^
    Aber bedenke, dass ich den Algorithmus sicher in einer Klausur nicht auswendig parat haben würde und er zudem wohl wirklich zu hochgestochen wäre. Auch, was die Dauer angeht, das aufzuschreiben.

    Wenn es jetzt darum ginge, das in einem Programm umzusetzen, dann hätte ich das gemacht. Habe ich ja auch oben geschrieben. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade Frag mal Frau Gogle nach punkt in dreieck algorithmus. Da war ich echt überrascht. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mir ist klar, dass es hierfür viele Möglichkeiten gibt. :P
    Aber bei uns ist es wirklich am besten, das mit einem solchen Ansatz wie oben zu lösen. Alles, was so in Richtung Umsetzen via Algorithmus geht, wird in dem Fall zu komplex und ungeeignet für den Matheunterricht.

    Daher würde es mir genügen, wenn ich weiß, wie es sich mit der Angabe von oben verhält. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Die Lösung ist genau an der von dir bemängelten Stelle falsch, und Dein Gedankengang ist korrekt. Zur Erklärung: Du hast den Lichtstrahl mit der Ebene des Dreiecks geschnitten. Das beweist, dass der berechnete Punkt R auf jeden Fall exakt in derselben Ebene liegt, in der auch das Dreieck selbst liegt. Zur Vorstellung: Das Dreieck liegt so, dass seine Normale (Senkrechte) von jeder Achse des Koordinatensystems um exakt 45° in positive Richtung abweicht.

    Jetzt fehlt noch der Nachweis, dass das Dreieck den Punkt auch enthält. Dazu beschreibst du den Punkt R nicht durch seinen Ortsvektor, sondern als Linearkombination von zwei Dreiecksseiten. Das geht, weil R wie gesagt auf derselben Ebene liegt. Fragt sich also nur noch, wie die zwei Parameter definiert sind.

    Gegenbeweis für die Kommaschreibweise: Wir setzen voraus, dass ausschließlich 0 < r, s < 1 (ohne Summe) gilt. Das bedeutet, dass 0 < r < 1 und 0 < s < 1 gilt. Nehmen wir an, das stimmt. Dann müssen alle Punkte R für alle r, s < 1 innerhalb des Dreiecks liegen. Das stimmt nicht für r = 0.9, s = 0.9. Wir haben ein Gegenbeispiel gefunden, daher ist die Annahme falsch.

    Dass die Summenschreibweise stimmt, muss man nicht beweisen, weil dies axiomatisch definiert ist. Es gibt den Begriff "Konvexkombination". Das ist eine Linearkombination, für die gilt, dass alle Parameter >= 0 sind und dass deren Summe genau 1 ergibt: mo.mathematik.uni-stuttgart.de/inhalt/aussage/aussage517/. In Deinem Fall ist der Vektorraum der R2 (!), da wir über eine Ebene (im R3) sprechen, wodurch eine Koordinate wegfällt. Es gibt also 2 Parameter. Dadurch, dass die Summe 1 ergibt, definierst du auf Deiner Zeichnung exakt die Linie zwischen den Punkten A und B. Soll der Punkt innerhalb des Dreiecks liegen (und nicht auf dem rechten Rand), muss die Summe nicht genau 1, sondern <= 1 sein. Aus beiden Regeln ergibt sich 0 <= r + s <= 1.
    Gruß
    hal2000
    Du hast insofern recht, dass wenn
    $\lambda > 0$
    und
    $\mu > 0$
    ,
    $\lambda + \mu < 1$
    gelten muss. Die Schreibweise
    $0 < \lambda + \mu < 1$
    wäre aber nicht ganz korrekt, da dies nicht mehr
    $\lambda > 0$
    und
    $ \mu > 0$
    impliziert (z.B. wenn
    $\lambda = -1 , \mu = 1.5$
    ). Ob man kleiner oder kleiner gleich verwendet, hängt davon ab, wie man "innerhalb" eines Dreiecks definiert. Der Rand gehört normalerweise nicht zum Inneren.

    Ich hätte jetzt

    $ \lambda, \mu > 0$

    $ \land \text{ } 0 < \lambda + \mu < 1$


    geschrieben.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Quadsoft“ ()

    @hal2000 Danke, das hat mir sehr weitergeholfen! Dann weiß ich jetzt, dass ich das ganz richtig vermutet hatte.
    Leider gibt es im OffTopic jetzt kein Hilfreich. Aber es ist mir generell schon aufgefallen, dass Du Problemstellungen sofort durchdringen kannst und immer Hilfestellungen parat hast. Das hat mich jetzt schon öfters weitergebracht. Danke nochmal. :thumbup:

    @Quadsoft Stimmt, dann könnte eins von beiden so gesehen 0 sein. Das hängt dann aber ja eben genau davon ab, ob man den Rand dazuzählt oder eben nicht.
    Insofern man den dazuzählt und es folglich mit "0 ≤" angibt, müsste es ja passen, oder? Aber Du hast recht, wenn das nicht der Fall ist, wäre es nicht ganz korrekt. Danke!

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Jo, ich habe Deinen Edit gesehen. Wenn man es so verknüpft, dann ist das Innere des Dreiecks abhängig von den Parametern wohl am Besten beschrieben, da keine der begrenzenden Seiten mit dazugehört.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @Trade Sorry, ich hab den Thread-Titel nur oberflächlich aufgenommen. :whistling:
    Ein Dreieck liegt immer in einer Ebene. Ist dieser Sachverhalt an eine weitere Nebenbedingung geknüpft, außer dass die Dreiecksnormale die Raundiagonale ist?
    Da das Ziel-Dreieck den (+++)-Oktanten okupiert, genügt es m.E. zu zeigen, dass der Durchstoßpunkt des Lichtstrahls durch die Ebene ebenfalls im (+++)-Oktanten liegt.
    In welcher Entfernung dies vom Aufpunkt oder Ursprung erfolgt, ist nicht Teil der Aufgabe.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Da das Ziel-Dreieck den (+++)-Oktanten okupiert, genügt es m.E. zu zeigen, dass der Durchstoßpunkt des Lichtstrahls durch die Ebene ebenfalls im (+++)-Oktanten liegt.

    Das genügt aber nur in diesem speziellen Fall, weil die Seiten des Dreiecks jeweils auf den Ebenen zwischen den Koordinatenachsen liegen. Das wäre vorher zu beweisen, denn im Allgemeinen kann das Dreieck auch enger begrenzt sein.
    Gruß
    hal2000

    Trade schrieb:

    Das Dreieck hat die Punkte A(4|0|0), B(0|4|0) und C(0|0|4).

    @hal2000 Jou.
    Nur so viel Aufwand wie nötig, nicht so viel Aufwand wie möglich. Für ne Promotion müssen natürlich alle denkbaren Fälle sicher behandelt werden. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!