Liniensegmente 2D
-
Hallo,
es geht darum aus einer Menge von Liniensegmenten, das nächstgelegene Obere Segment zu dem Startpunkt des gerade betrachtenen zu finden.
z.B:Segment1 (3,2), (5,4)
Segment2 (1,3), (4,4)
Segment3 (2,2), (4,3)
Segment4 (7,2), (9,3)Ich "stehe" an Startpunkt seg 1 (3,2) und suche das nächstgelegene obere Segment.
„Über“ bezieht sich auf die Segmente, die bei der aktuellen X-Koordinate einen größeren Y-Wert haben.
Kann ich das über die Geradengleichung lösen?
y = m*x+nWie prüfe ich, ob der aktuelle X wert überhaupt in dem Bereich des zu prüfenden Segmentes liegt und wie rechne ich dann den y Wert an x aus?
vielen Dank.
-
Unterscheide bitte zwischen Start- bzw. Endpunkt und X- bzw. Y-Koordinate. Ich werde nämlich aus deiner Beschreibung nicht schlau. Was ist die "aktuelle X-Koordinate" eines Segments?
-
Mach eine Gerade draus und such dir ein x aus (z.B. 0). Guck dann, bei welcher Gerade der nächtsgelegene y-Wert rauskommt.
-
Hallo,
danke fürs antworten.
Ist es so verständlicher? Was ist unklar?Startp(x,y) Endp (x,y)
Segment1 (3,2), (5,4)
Segment2 (1,3), (4,4)
Segment3 (2,2), (4,3)
Segment4 (7,2), (9,3)
-
Deine Aufgabenbeschreibung ist konfus, nicht deine Beispieldaten (mit denen man BTW nichts anfangen kann, solange du nicht dein Vorhaben exemplarisch durchrechnest).
Du stehst also in einem Punkt P = (x,y). Jetzt suchst du das nächstgelegene Segment, das über dem Punkt P liegt. Wann liegt ein Segment über P? Wenn die zweite Koordinate des Startpunkts des Segments größer als y ist? Wenn es irgendeinen Punkt innerhalb des Segments gibt, dessen zweite Koordinate größer als y ist?
Zweite Frage: Was heißt nächstgelegen? Soll der Differenz in der Y-Koordinate minimiert werden? Soll der euklidische Abstand zwischen Anfangspunkt des Segments und P minimiert werden? Soll der kleinste euklidische Abstand eines Segmentpunkts zu P minimiert werden?
-
tut mir leid, neuer Versuch.
„Über“ bezieht sich auf die Segmente, die bei der aktuellen X-Koordinate einen größeren Y-Wert haben.
Direkt über meint das Segment mit dem nächstgrößeren x Wert.
Im Fall von dem Bsp. ist das nächsthöher gelegene Segment zu Segment1 das Segment2. Segment 3 hat auch einen gültigen x Wert, der Y wert ist aber weiter oben. Segment 4 kommt nicht in betracht, weil x Wert nicht im Bereich von dem Start/Endpunkt von Segment 1 ist.
-
Leider hat deine Beschreibung sich nicht verbessert. Du wiederholst du alte Formulierung, dass die "aktuelle X-Koordinate einen größeren Y-Wert hat", was ich eben schon nicht verstanden habe. Dein Beispiel ist für mich auch nicht nachvollziehbar. Segment 3 hat einen gültigen x-Wert? Was ist denn ein gültiger x-Wert? Und wie hat eine Ebene, die nicht parallel zur x-Achse läuft, nur einen einzigen x-Wert? Der Y-Wert von Segment 3 soll weiter oben liegen als der Y-Wert von Segment 2? Das Segment 3 liegt vollständig unterhalb von Segment 2, weshalb ich nicht mal erraten kann, was du meinst. Warum kommt Segment 4 nicht in Betracht? Weil es komplett rechts von Segment 1 liegt?
-
<---> schrieb:
es geht darum aus einer Menge von Liniensegmenten, das nächstgelegene Obere Segment zu dem Startpunkt des gerade betrachtenen zu finden.
z.B:Segment1 (3,2), (5,4)
Segment2 (1,3), (4,4)
Segment3 (2,2), (4,3)
Segment4 (7,2), (9,3)Ich "stehe" an Startpunkt seg 1 (3,2) und suche das nächstgelegene obere Segment.
„Über“ bezieht sich auf die Segmente, die bei der aktuellen X-Koordinate einen größeren Y-Wert haben.
Kann ich das über die Geradengleichung lösen?
y = m*x+nja - das kannst Du mit Hilfe einer linearen Funktion lösen.
Sei die Startpunktkoordinate und die Koordinate des Endpunkts des Segments, so lautet die lineare Funktion, die durch die beiden Punkte verläuftSetzt Du die Daten aus Segment 3 da ein, so erhältst Du . nach Einsetzen des Startpunkts erhält man
. Das liegt 'oberhalb' des Startpunkts - da 2,5>2 ist und unterhalb des Segments 2.
Für Segment 2 lautet die lineare Funktion, also ist dort . Und dieser Wert ist größer als 2,5.
Folglich ist lt. Deiner Definition das 'nächstgelegen' Segment das Segment 3 (mit dem Wert 2,5).<---> schrieb:
Wie prüfe ich, ob der aktuelle X wert überhaupt in dem Bereich des zu prüfenden Segmentes liegt und wie rechne ich dann den y Wert an x aus?
ganz einfach indem Du schaust, ob der x-Wert (hier x=3) im Intervall (das heißt zwischen) den beiden x_Werten des betrachteten Segments liegt.
Das Intervall für Segment 2 ist [1;4] - x=3 liegt zwischen 1 und 4.
Das Intervall für Segment 3 ist [2;4] - x=3 liegt auch zwischen 2 und 4.Programmtechnisch heißt das etwa
if( x >= x_0 && x <= x_1 ) { // x liegt im Intervall [x_0;x_1]
Gruß
Werner