Verfasst am: 06.03.2017, 13:04
Titel: "Hüllkurve" für beliebige geometrische Konturen
Hallo zusammen, ich bin der Christian!
Ich habe mich soeben in diesem Forum angemeldet, da ich durch reines googlen im Web einfach nicht mehr weiterkomme. Ich hänge nun schon seit 2 Wochen an diesem Problem und hoffe hier endlich auf eine Lösung zu kommen.
Worum gehts?
Ich habe im Rahmen eines Scriptes viele verschiedene geometrische Konturen.
Ziel ist es jetzt, für jeden Punkt auf einer Kontur einen neuen Punkt zu finden, der genau im 90° Winkel mit dem Abstand r liegt.
Hier mal eine Skizze wie es später aussehen soll:
-> Anhang #01
Und dazu die x und y Koordinaten von dieser Beispielkontur:
-> Anhang #02
Bisher habe ich bereits versucht:
a) Über den gradient Befehl auf eine Normalensteigung zu kommen und dann über Pythagoras auf delta_x bzw delta_y zu kommen. Für einen einfachen Kreis funktioniert das, bei komplexeren Formen stößt das jedoch schnell an seine Grenzen.
b) über splines Nachbarpunkte interpoliert, die splines dann abgeleitet und dann als Einheitsnormalenvektor geschrieben. Auch hier entsteht irgendwo ein Problem
c) die Analogie zu komplexen Zahlen genutzt und so den Winkel im Dreieck, das durch die Normale und delta_x und delta_y gebildet wird, beschrieben. Auch das funktioniert bei einem einfachen Kreis, bei komplexeren Formen, die ihre Form in einem Quadranten erheblich ändern, müsste man für jede Form viel zu viele Ausnahmen programmieren, damit das funktioniert.
Jetzt bin ich mit meinem Latein am Ende und hoffe auf eure Hilfe!
Zusammengefasst nochmal das Wichtigste:
Der neue Punkt muss
a) 90° auf dem alten Punkt stehen
b) genau den Abstand r=5 zum alten Punkt haben
Und das ganze soll später automatisch für jede beliebige Form durchlaufen.
Sollte an der Aufgabenstellung etwas unklar sein, einfach melden, ich habe mich bemüht mein Problem so ausführlich wie möglich zu beschreiben.
Das Stichwort hier ist Parallelkurve und nicht Hüllkurve. Ist auf jeden Fall nicht so einfach, vor allem dann wenn Spitzen entstehen (siehe Wikipedia Eintrag zu "Parallelkurve"). Wenn du wirklich nur die Koordinaten brauchst und dir die Spitzen nichts ausmachen sollte dir das hier weiterhelfen: https://de.mathworks.com/matlabcent.....nge/27873-parallel-curves
Wenn du allerdings keine überschneidenden Kurven haben willst dann wird es glaube ich schwer. Habe damals als ich dasselbe Problem hatte keine zufriedenstellende Lösung gefunden.
Liegt das vielleicht an der Matlab Version? Diese function ist ja nun schon 10 Jahre alt?
Edit:
Kann es sein, dass es früher mal den Operator für Magnitude -> mag gegeben hat?
Theoretisch sollte der Operator sum ja das gleiche machen oder?
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 07.03.2017, 13:40
Titel:
Das ist auch eine Funktion aus dem File Exchange. Steht auch so als Kommentar drin
Code:
% % List of Dependent Subprograms for % % parallel_curve % % % % FEX ID# is the File ID on the Matlab Central File Exchange % % % % % % Program Name Author FEX ID# % % 1) magn Paolo de Leva 8782
Was ich da nicht ganz verstehe, die Variable "flag1" soll eigentlich verhindern, dass inner und outer springt. Zumindest lese ich das aus der Beschreibung so raus. Allerdings passiert das bei mir dennoch.
Hat dazu noch jemand eine Anregung?
Ich habs!!! Tausend Dank an dich "Gast", du bist mein Held!!!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.