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

fläche mehrerer polygone

 

rooky
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 76
Anmeldedatum: 25.04.12
Wohnort: ---
Version: 2012a
     Beitrag Verfasst am: 20.04.2013, 23:28     Titel: fläche mehrerer polygone
  Antworten mit Zitat      
Hallo,
ich bin auf der Suche nach einer Berechnung der Fläche von mehrereren Poygonen. Die Polygone können sich schneiden oder nicht. Was ich am Ende brauche ist der Flächeninhalt der farbigen Fläche. Wenn polygone uebereinader liegen, duerfen die aber nur einmal gezählt werden. Polybool kann ich nicht verwenden, da ich keine lizenz habe Sad
Im folgenden Beispiel überdecken sich die blaue und rote Fläche ich bräuchte den Flächinihalt von allem was farbig ist
Code:

pol1=[  2.7561    3.6724
    2.5240         0
    4.0000         0
    4.0000    4.0000
    2.8335    4.0000
    2.7561    3.6724]

fill(pol1(:,1),pol1(:,2),'b')

hold on
pol2=[   3.9577    2.2180
    3.4532    0.0829
    3.4480         0
    4.0000         0
    4.0000    2.2180
    3.9577    2.2180]

fill(pol2(:,1),pol2(:,2),'r')
hold on
pol3=[   1.2457    0.4249
         0    1.6199
         0         0
    1.3642         0
    1.2457    0.4249]

fill(pol3(:,1),pol3(:,2),'k')
 

Hier muesste als Lösung 6.6879 raus kommen
Vielleicht hat jemand eine Idee. Danke
Private Nachricht senden Benutzer-Profile anzeigen


rooky
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 76
Anmeldedatum: 25.04.12
Wohnort: ---
Version: 2012a
     Beitrag Verfasst am: 22.04.2013, 04:32     Titel:
  Antworten mit Zitat      
Hallo,
ich weiß diese Frage ist nicht trivial. Und ich bin auch nicht auf der Suche nach einer "ein-Zeilen_Lösung". Was ich bräuchte sind ein paar Tipps wie ich vorgehen könnte.
Bei meinem Problem habe ich ca. 100 areas. Ich hab mir dabei folgendes überlegt:
- Ich bräuchte eine Schleife die untersucht ob sich area(1) mit area(i) schneidet. Das könnte ich mit inpolygon machen. Ich berechne dann die Schnittpunkte und berechne einen convhull.
- Diese müsste ich dann wieder mit allen übrigen vergleichen.
- zum Schluss müsste ich mit polyarea alle sich nicht schneidenden areas addieren.
Wie könnte ich das am besten mit dem Vergleich und den Schleifen machen. Vielleicht kann mir bei der Vorgehensweise jemand helfen.
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2013, 06:39     Titel:
  Antworten mit Zitat      
Da gibt es einiges im file-exchange. Zum Beispiel:

http://www.mathworks.com/matlabcent.....ange/8818-polygon-clipper

viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
rooky
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 76
Anmeldedatum: 25.04.12
Wohnort: ---
Version: 2012a
     Beitrag Verfasst am: 22.04.2013, 17:11     Titel:
  Antworten mit Zitat      
Hallo Thomas,
das hab ich auch schon gefunden. Da gibt es nur 2 Probleme:
- ich hab keine Ahnung was das immer mit der Lizenz auf sich hat. Das ist auch der Grund, dass ich nie etwas von dem File exchange verwende. Ich glaub nicht, das man einfach die files in seinem code verwenden darf. Daher lass ich das immer sein.
- das andere ist. Die vergleichen nur 2 polygone. Das kann ich selber auch machen. Aber was mach ich bei 100 Polygonen?
Mein Problem im Moment ist, die Schleifen so auf zu bauen, das der Vergleich möglichst schnell und robust abläuft. Ich schreib mal nochmal das Beispielproblem.
Wenn ich die area1 mit area2 vergleiche und die
- haben einen Schnittpunkt. Dann muesste ich area1 und area2 löschen und anstelle derer die neue area12 in den Vergleich einbauen.
- haben die keinen Schnittpunkt. Dann bleiben die stehen und area1 wird mit area3 verglichen. Hier könnte dann wieder ein Schnittpunkt entstehen und area13 könnte auch wieder einen Schnittpunkt mit area2 haben. usw. ...
Im Moment ist diese Abfrageroutine mein Problem. Wie mach ich das am effizientesten
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.04.2013, 22:42     Titel:
  Antworten mit Zitat      
Hallo rooky,

Alle neuen und fast alle alten Files, die Du im FileExchange downloaden kannst, stehen unter der "BSD-Lizenz". Die gibt Dir schriftlich die Garantie, dass Du den Code in eigenen Projekten verwenden darfst, eigene Änderungen vornehmen darfst, den Code geändert und ungeändert weitergeben, auch für kommerzielle Projekte verwenden. Aber Du darfst das Lizenz-File dabei nicht vergessen. Also im Grunde darfst Du mit dem Code alles machen, was Du willst, ausser die Information zu löschen, wer der Autor war.
Die BSD-Lizenz ist damit die Absicherung für dich, falls Dich irgendwann mal jemand fragt, ob du den fremden Code überhaupt verwenden darfst.

Ich kann also nur wärmstens empfehlen nach fertigen Lösungen im FileExchange zu suchen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 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.