WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Schnittpunkte mehrerer Objekte

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2021, 13:59     Titel: Schnittpunkte mehrerer Objekte
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem bei meiner Schnittpunktberechnung. Mit dem Befehl polxypoly lassen sich bei einfachen Objekten (Rechteck und Linien) die Schnittpunkte einfach berechnen, bei komplexeren Sachverhalten sieht es allerdings komisch aus, siehe beigefügtes Bild. Mein Code läuft ohne Probleme.

Hatte schonmal jemand dieses Problem und hat vllt einen Hinweis/Tipp?

Viele Grüße und vielen Dank vorab!

Unbenannt.JPG
 Beschreibung:

Download
 Dateiname:  Unbenannt.JPG
 Dateigröße:  13.06 KB
 Heruntergeladen:  191 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.08.2021, 14:54     Titel:
  Antworten mit Zitat      
Hallo,

ich gehe davon aus, dass du die Schnittpunkte zwischen den gelben Linien und der schwarzen Linie haben möchtest. Das ist ja erst mal eine einfache Geometrieaufgabe. Vermutlich sind die roten Sterne die Schnittpunkte, die du bekommst? Warum hier zusätzliche Punkte als Schnittpunkte erkannt werden, erschließt sich mir nicht.
Ein reproduzierbares Beispiel könnte helfen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2021, 20:40     Titel:
  Antworten mit Zitat      
Hallo Harald,

ja, genau, ich erhalte die roten Sterne als Schnittpunkte. Das Skrpit berücksichtigt wohl die "fehlerhaft dargestellten Schnittpunkte" nicht, daher lasse ich diesen Fehler erstmal außer acht.

Ich hätte aber noch eine andere Frage:
Ich untersuche diverse Verläufe (ähnlich zu dem gelben Verlauf aus dem Bild) zeitlich und berechne wann diese sich in einem Objekt(Fläche, schwarze Umrandung im Bild) schneiden. Gibt es eine Möglichkeit wie ich mir den ersten oder den letzten Schnittpunkt eines Verlaufs mit einem Objekt ausgeben kann? Die Verläufe besitzen eine zeitliche Komponente.

Momentan berechne ich den ersten Schnittpunkt so:
erster_Schnittpunkt_x=x_SP(1,1);
y analog und den letzten Schnittpunkt so:
letzter_Schnittpunk_x=x_Sp(max(size(x_SP));

Mit dieser Vorgehensweise werden allerdings die falschen SP ausgegeben.

Ich bin noch relativ neu in Matlab und bin für Vorschläge offen.

Viele Grüße und vielen Dank vorab.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.08.2021, 21:26     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Mit dieser Vorgehensweise werden allerdings die falschen SP ausgegeben.

Sind denn die richtigen SP in x_SP enthalten? Dann müsstest du eine Möglichkeit finden, diese zu identifizieren. Hier kann man dir wohl nur bestenfalls bei der Umsetzung der Möglichkeit helfen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2021, 21:51     Titel:
  Antworten mit Zitat      
Hallo Harald,

ja, die richtigen Schnittpunkte sind enthalten. Aber ich weiß nicht wie ich das implementieren soll. Bei meinem Skript ist es recht komplex. Daher ein vereinfachter Ansatz:
Die Verläufe stellen sozusagen Umrisse dar, sagen wir mal 9 x- und y-werte pro Umriss und der Umriss verschiebt sich um x-Zeiteinheiten.
Der hier dargestellte umriss verschiebt sich von links nach rechts.
Anebi ein vereinfachter Code:
Code:
RX=[1 2 2 1 1];
RY=[2 2 1 1 2];
plot(RX,RY,'k');
hold on;
R1X=[0 0.1 0.2 0.3 0.4 0.3 0.3 0.1 0];
R1Y=[1.5 1.7 1.7 1.7 1.5 1.3 1.3 1.3 1.5];
plot(R1X,R1Y,'m');
for i=0:0.3:3 % Zeiteinheiten
    RiX=[0+i 0.1+i 0.2+i 0.3+i 0.4+i 0.3+i 0.3+i 0.1+i 0+i];
    hold on;
    plot(RiX,R1Y);
end


Vllt sehe ich auch gerade vor lauter Bäume den Wald nicht mehr...

Beste Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.08.2021, 21:59     Titel:
  Antworten mit Zitat      
Hallo,

okay, das illustriert die Problemstellung.
Was hast du denn aber nun und was brauchst du noch? Kannst du zu jeden Zeitschritt die Schnittpunkte berechnen?
Dann weißt du ja: wenn es zu einem Zeitpunkt noch keinen Schnittpunkt gab und zum nächsten schon, dann ist das der erste Schnittpunkt. Oder genau genommen liegt der erste Schnittpunkt zwischen diesen Zeitpunkten. Willst / musst du das noch feiner bestimmen?
Entsprechend für den letzten Schnittpunkt.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2021, 22:48     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Rückmeldung. Ich hätte die Berechnung der SP folgendermaßen in der for Schleife erfänzt:

Code:
RX=[1 2 2 1 1];
RY=[2 2 1 1 2];
plot(RX,RY,'k');
hold on;
R1X=[0 0.1 0.2 0.3 0.4 0.3 0.3 0.1 0];
R1Y=[1.5 1.7 1.7 1.7 1.5 1.3 1.3 1.3 1.5];
plot(R1X,R1Y,'m');
Werte_x_SP=[];
Werte_y_SP=[];
for i=0:0.3:3 % Zeiteinheiten
    RiX=[0+i 0.1+i 0.2+i 0.3+i 0.4+i 0.3+i 0.3+i 0.1+i 0+i];
    hold on;
    plot(RiX,R1Y);
    [x_SP,y_SP]=polyxpoly(RX,RY,RiX,R1Y);
    Werte_x_SP=[Werte_x_SP;x_SP];
    Werte_y_SP=[Werte_y_SP;y_SP];
end
plot(Werte_x_SP,Werte_y_SP,'r*')
 


Ich sehe gerade das mein Beispiel für meine Problematik viel zu einfach ist:D In meinem Skript ist es viel komplizierter, aber vllt geht es auch anhand dem vereinfachten Beispiel.
Aber vllt könnte ich die Schleife auch so umschreiben, dass mir gesagt wird zu welchem Zeitpunkt mein Objekt das Rechteck schneidet und wann verlässt. D.h ich müsste es feiner bestimmen. Aber wie ich das implementiere, weiß ich leider nicht.

Beste Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.08.2021, 08:27     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich sehe gerade das mein Beispiel für meine Problematik viel zu einfach ist:D

Dann ist es kein gutes Beispiel. ;) Insbesondere funktioniert da ja die Berechnung der ersten und letzten Schnittpunkte wie gestern 21:40 beschrieben?

Für die feinere Bestimmung müsste man irgendeine Art von Interpolation verwenden. Allerdings ist das für mich auch keine triviale Aufgabe.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2021, 08:09     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe ein neues Beispiel gepostet, aber unter einem anderen Post "Berechnung des maximalen Abstandes" mit einer trivialen Aufgabe (glaube ich. Wink)

Hast du dazu vllt einen Tipp? Da geht es um fast den gleichen Sachverhalt
Beste Grüße
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.