Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » Allgemeine Deginition Schnittpunkt Gerade/Spline

Allgemeine Deginition Schnittpunkt Gerade/Spline

Universität / Fachhochschule

Tags: Gerade, Schnittpunkt, Spline

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
Robot1011

Robot1011 aktiv_icon

07:31 Uhr, 14.03.2017

Antworten
Hallo Leute.

Ich versuche für ein Projekt Sensordaten zu simulieren.
Ich messe mit einem Lidar Sensor den Abstand von einem Punkt zum Rand einer Rennstrecke in 0.9° Schritten.
Für die Simulation möchte ich die Rennstrecke als Reihe von Koordinatenpunkten importieren (zum anfangen mal einfach einen Streckenrand).
Jetzt möchte ich von einem gegebenen Punkt in einem gegebenen Winkel von diesem Punkt den Abstand zum Streckenrand bestimmen. Der Streckenrand kann zunächst einfach eine Lineare interpolation. Zw. den Stützpunkten sein - sollte in folge aber ein geschlossener Spline werden.
Ich suche nach einer möglichst allgemeinen Lösung weil das ganze in ein Programm implementiert werden soll.
Jetzt meine Frage: gibt es dafür eine einfache lösung ohne sich für jeden winkel die passenden stützpunkte zu suchen und dann ein Polynom durchzulegen? Weil das suchen der Stützpunkte rel. aufwendig wird.

Lg

Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert):
"Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen."
Hierzu passend bei OnlineMathe:
Schnittpunkte bestimmen

Online-Übungen (Übungsaufgaben) bei unterricht.de:
 
Online-Nachhilfe in Mathematik
Antwort
Roman-22

Roman-22

09:09 Uhr, 14.03.2017

Antworten
Unklar, was genau du machen möchtest. In welchem Koordinatensystem möchtest du dich letztendlich bewegen?

Du hast die Koordinaten der Stützpunkte ja durch deine Messung ja schon direkt in Polarkoordinaten gegeben, wenn du deinen Standpunkt als Zentrum wählst. Eine lineare Interpolation von Winkel und Abstand sollte deine Stützpunkte dann jeweils paarweise durch eine archimedische Spirale verbinden.
Und wenns kartesische Koordinaten sein sollen - warum schreibst du, dass das Berechnen der Stützpunkt so aufwändig ist? DU benötigst doch nur die gemessene Entfernung, den Winkel bzw. dessen Sinus- und Kosinuswert.
Warum sollen es unbedingt Splines sein und was möchtest du denn mit der digitalisierten Strecke überhaupt machen?
Robot1011

Robot1011 aktiv_icon

09:28 Uhr, 14.03.2017

Antworten
Sorry, das ist vllt. falsch rüber gekommen. Ich möchte die Strecke nicht aus den Messpunkten nachbilden.
Ich möchte eine beliebige Strecke importieren ( Form einer Reihe von Koordinatenpunkten). Dann möchte ich das virtuelle "Auto" an einem beliebigen Punkt auf der Strecke platzieren und daraus berechnen welche Daten mein Sensor liefern würde - würde er auf der echten Strecke stehen. Es geht mir um die Simulation dieser Sensordaten um mein Projekt vorher testen zu können bevor ich mir einen sehr teuren Lidar Sensor anschaffe.

Ich möchte daher zunächst in einem globalen Koordinatensystem bleiben. Die Umrechnung auf das Koordinatensystem des Fahrzeugs ist dann kein Problem.

Der Lidar Sensor würde mir alle 0.9° einen Abstand zur Wand liefern. Das heist ich möchte abhängig von einem Winkel den Abstand zw. Punkt und Spline ermitteln. Das Problem dabei ist das die gedachte Gerade nie genau einen meiner Stützpunkte treffen wird. Das bedeutet ich müsste zuerst die beiden Stützpunkte finden die links und rechts von der Gerade liegen (was sich ja mit einer minimierung des Projektionsabstands machen lassen würde), was mit steigender Anzahl an Stützpunkte immer aufwendiger wird. Daher wollte ich fragen ob es eine andere, einfachere Möglichkeit gibt.

lG
Antwort
Roman-22

Roman-22

09:37 Uhr, 14.03.2017

Antworten
OK, das klingt ja jetzt ganz anders.
Die importierte Strecke liegt also in kartesischen Koordinaten vor.
Ich denke, wenn die Anzahl der Datenpunkte groß genug, bzw. der Streckenverlauf nicht "bösartig" ist, sollte vielleicht lineare Interpolation ausreichend sein, oder?
Dann "reduziert" sich der Aufwand darauf, (n-1)2 mal zwei Geraden zu schneiden. oder?
Robot1011

Robot1011 aktiv_icon

09:47 Uhr, 14.03.2017

Antworten
Ja genau - das Problem ist wie finde ich die richtige Gerade zum schneiden? Also genau die zwei Punkte zwischen denen die Gerade liegt?
Antwort
Roman-22

Roman-22

15:16 Uhr, 14.03.2017

Antworten
> wie finde ich die richtige Gerade zum schneiden?
naja, deine Scangerade mit ALLEN Strecken schneiden und dann die nehmen, bei der der Schnittpunkt
1) innerhalb der Strecke ist und
2) wenns mehrere gibt, dem Sensor am nächsten liegt

Eine Alternative, die mir gerade einfällt und von der man erst mal prüfen müsste, ob der Aufwand dabei wirklich geringer ist, wäre folgende:
Mittels der HNF der Scangeraden kannst du von jedem Punkt den orientierten Abstand von der Gerade ermitteln - uns interessiert nur dessen Vorzeichen.
Fang also beim ersten Punkt deiner Rennstrecke an und ermittle für jeden Folgepunkt das Vorzeichen des Abstands von der Scangeraden. Sobald dieses Vorzeichen wechselt hast du eine Strecke gefunden, die die Scangerade schneidet.

Diese Abstandsrechnerei aber auch das Schneiden zweier Geraden lässt sich sicher programmiertechnisch relativ einfach und effizient realisieren. Das Schneiden der Scangeraden mit den einzelnen Kubiken einer Spline-interpolation ist da sicher deutlich aufwändiger und rechenintensiver.

Soll dein Programm in einen μC implementiert werden?
Robot1011

Robot1011 aktiv_icon

15:39 Uhr, 14.03.2017

Antworten
Danke für deine Antwort - der erste Ansatz klingt interessant, aber wie bestimmst du ob der Punkt in oder ausserhalb der Bahn liegt?

Den zweiten Ansatz verfolge ich aktuell gerade selbst. In Mathematica funktioniert der schon mal ganz gut.

Das ganze soll auf einem starken Computer laufen - von daher ist Rechenleistung vorhanden.
Das Übergeordnete Ziel ist aus einer vorhandenen Strecke und die darin eingezeichnete Ideallinie "ideale" Sensordaten zu erzeugen. Diese möchte ich dann zum lernen eines Deep-Learning Algorythmus verwenden. Und später im Umkehrschluss im selben Programm diesen dann auch testen.
Antwort
Roman-22

Roman-22

19:49 Uhr, 14.03.2017

Antworten
> der erste Ansatz klingt interessant,
Vor einer ähnlichen Aufgabe steht man auch, wenn man überprüfen muss, ob ein Punkt innerhalb oder außerhalb eines geschlossenen Polygons liegt. Da gibts verschiedene interessante Algorithmen zu finden aber meist wird von dem Punkt aus eine beliebige Gerade gelegt (bzw. ein Strahl) und die Anzahl der Schnittpunkte mit dem Umriss des Bereichs gezählt. Für die konkrete Implementation gibts da oft auch eine Reihe trickreicher Vereinfachungen zu finden, welche den Rechenaufwand senken.
Ein bekannter Algorithmus ist nach Jordan benannt
de.wikipedia.org/wiki/Punkt-in-Polygon-Test_nach_Jordan
aber ein wenig Suche auch auf englischsprachigen Seiten beschert dir vielleicht sogar effizientere Varianten, die du dir zunutze machen kannst und du vl dann schon bevor du den konkreten Schnittpunkt berechnest entscheiden kannst, ob diese überhaupt auf der Polygonseite liegt.

> aber wie bestimmst du ob der Punkt in oder ausserhalb der Bahn liegt?
Das kommt darauf an, wie du den Schnittpunkt bestimmst.
Nehmen wir oBdA an, dass sich dein Sensor im Ursprung befindet und die Abszisse (x-Achse) dem Winkel φ=0 entspricht. Das lässt sich durch eine Verschiebung und Drehung des KS stets so einrichten.

Dann hat deine Sensorgerade die Gleichung y=mx, wobei m=tanφ ist. φ sei dabei im mathematisch positiven Sinn, also im Gegenuhrzeigersinn, gemessen.

Zwei Nachbarpunkte deines Linienzugs seien A(xA/yA) und B(xB/yB).
Die Gerade (AB) kann nun zB in Parameterdarstellung aufgestellt werden und wird mit der Sensorgeraden geschnitten.
Es ergibt sich das folgende Gleichungssystem in λ und x
(xmx)=(xAyA)+λ(xB-xAyB-YA)
welches die Lösung
λ=yA-mxAyA-yB-mxA+mxB
und
x=xAyB-xByAyA-yB-mxA+mxB
hat.
Nur wenn 0λ1 gilt liegt der Schnittpunkt (x/mx) innerhalb des Polygonsegments und ist relevant. Dann muss eben sein Abstand vom Sensor mit |x|1+m2=|xcos(φ)| berechnet werden.
Der Fall, dass Sensorgerade und Segment zueinander parallel sind (Division durch Null) müsste gesondert abgefangen werden. Auch eine senkrechte Sensorgerade (φ=±90) ist ein Fall, der gesondert behandelt werden muss.

Wie gesagt - gut möglich, dass man mit ein paar Tricks noch die eine oder andere Rechenoperation sparen kann.
Diese Frage wurde automatisch geschlossen, da der Fragesteller kein Interesse mehr an der Frage gezeigt hat.