|
|
Mehrere Gerade plotten und verbinden |
|
Matlablstarter |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 03.11.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.11.2016, 13:51
Titel: Mehrere Gerade plotten und verbinden
|
|
|
|
|
Hallo liebe Community,
Ich sitze zurzeit an einem Matlab Projekt. Im Endeffekt soll man in zwei verschiedene Vektoren einmal Längeneinheiten und in den anderen Vektor zugehörige Radien eingeben. Diese Vektoren sollen dann durchlaufen werden und geplottet werden. Wenn der Radius 0 ist, soll eine gerade geplottet werden, ansonsten ein Kreis mit dem angegebenen Radius.
Also zum Beispiel steht im Vektor v = [100 100 20] und im Vektor r (radius) = [0 50 0], dann soll das Programm zuerst eine Gerade mit der Länge 100, dann ein Kreisstück mit der Länge 100 und dem Radius 50 und dann noch eine Gerade mit der Länge 20 plotten.
Endergebnis soll sein, dass ein Nutzer eben beliebig viele Geraden und Kreisstücke eingibt und daraus dann eine "Straße" bzw. ein Weg geplottet wird.
Ich hoffe das ist einigermaßen verständlich.
Ich habe das Grundgerüst schon fertig, allerdings frage ich mich, wie ich es schaffe, dass die verschiedenen Geraden (jetzt frage ich erstmal nur nach Geraden, eins nach dem anderen, die Kreisstücke würden mich jetzt zu sehr irritieren) aneinander "gehängt" werden.
Also sagen wir mal mein Vektor v sieht so aus v = [60 100] und mein Vektor r = [0 0]. Jetzt sollen zwei Geraden (einmal mit der Länge 60 und dann mit der Länge 100) geplottet werden. Da das Programm auch nicht im VOrhinein weiß, wie viele Geraden geplottet werden sollen, muss das alles abstrakt gehalten sein (eine for-schleife durchläuft den vektor und man greift auf die einzelnen längeneinheiten mit v(i) zu).
Die beiden Geraden zu plotten ist kein Problem, aber wie bekomme ich es hin, dass die zweite Gerade genau dort gestartet wird, wo die andere aufhört ?
Meine Idee bisher war, dass ich am Anfang einen Vektor p = [0 0] initialisiere, von dem aus die erste Grade geplottet wird. Dieser Punkt soll sich dann nach jeder Geraden so verändern, dass er genau am Ende der Geraden ist, so dass von ihm aus weiter geplottet werden kann.
Hat jemand eine Idee, wie man das bewerkstelligen könnte ? Also wie muss sich der Punkt p nach jeder Zeichnung einer Geraden verändern, um sich jetzt auf den zuletzt geplotteten Punkt zu beziehen ?
Danke im Voraus,
Matlablstarter
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 03.11.2016, 22:31
Titel: Re: Mehrere Gerade plotten und verbinden
|
|
Hallo Matlablstarter,
Um eine Strecke zu zeichnen, benötigt man einen Start- und einen Endpunkt. Equivalent dazu sind ein Startpunkt, eine Richtung und die Länge. Die Länge hast Du ja gegeben. Wie sieht es nun mit dem Startpunkt und der Richtung aus?
Bei den Kreissegmenten fehlt die Richtung auch noch: Ein Segment der Länge (meinst Du dann die Bogen- oder die Sehnen-Länge) kann ja nach rechts oder links geöffnet sein.
Gruß, Jan
|
|
|
Matlablstarter |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 03.11.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.11.2016, 08:29
Titel:
|
|
Hallo Jan,
Danke erstmal für die schnelle Antwort.
Also der Startpunkt ist am Anfang Punkt (0|0) und danach soll die Strecke ja immer von der letzten gezeichneten Strecke aus weiter führen. Also ist der Startpunkt nach jedem Zeichnen der Punkt, wo das letzte Zeichnen aufgehört hat, so dass die jetzt zu zeichnende Strecke genau an der zuletzt gezeichneten Strecke ansetzt. Die Richtung st geradeaus, also sagen wir, ich zeichne als erstes eine Strecke von P1(0|0) zu P2(80|0) (also 80 Länge) und setze daran eine weitere Strecke an, dann soll sie genau in die selbe Richtung weitergehen. (In diesem Fall also komplett horizontal)
Wenn ein Kreisstück gezeichnet wurde, soll die Strecke genau so einfach geradeaus weitergezeichnet werden.
Grüße
Matlablstarter
|
|
|
Matlablstarter |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 03.11.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.11.2016, 09:03
Titel:
|
|
Bei den Kreissegmenten wird die Richtung durch Länge und radius angegeben. Wenn der Radius positiv ist, geht das Kreissegment nach oben und wenn r negativ ist, geht er nach unten.
Und ich meine die Bogenlänge.
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 04.11.2016, 09:57
Titel:
|
|
Hallo Matlablstarter,
"Geradeaus" heißt zu Beginn also in X-Richtung. "Nach oben" ist bei Kreissegmenten irreführend, denn wenn Du eine 90-Grad-Kruve dazwischen hast, ist "nach oben" nicht mehr sinnvoll. Du brauchst "nach rechts" oder "nach links".
Es geht also ganz genau so, wie man es auch per Hand auf einem Blatt Papier machen würde: Man setzt den Stift an und geht die gewünschte Länge in die aktuelle Richtung. Dann lässt man den Stift auf dem Papier und nutzt den Endpunkt als neuen Startpunkt: "initial Position" = "final Position". Wenn man ein Kreissegment hatte, wird zudem die Richtung angepasst.
Gruß, Jan
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|