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

Umhuellende (Kontur) von Koordinaten

 

RoyalFlush
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 27.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2010, 03:36     Titel: Umhuellende (Kontur) von Koordinaten
  Antworten mit Zitat      
Hallo!

Ich hab mal ein Beispielbild angehaengt. Weiss jemand wie ich am besten die Kontur ueber meine Punkte bekomme? Ich haette gerne ein gefuelltes Polygon, die Punkte sollen dabei die Eckpunkte sein!

Waere fuer jeden Vorschlag dankbar!
Danke!

Points.TIF
 Beschreibung:
Points

Download
 Dateiname:  Points.TIF
 Dateigröße:  60.39 KB
 Heruntergeladen:  1121 mal
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 14.09.2010, 07:57     Titel:
  Antworten mit Zitat      
Mit einem einfachen "fill" in der Hilfe wäre es getan:

Zitat:
"Filled 2-D polygons"


mit

Zitat:
fill(X,Y,C) creates filled polygons from the data in X and Y with vertex color specified by C.


gekommen. Wenn ich das richtig verstanden habe, ist das genau das, was du suchst.

Grüße..
Private Nachricht senden Benutzer-Profile anzeigen
 
RoyalFlush
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 27.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2010, 08:00     Titel:
  Antworten mit Zitat      
eupho hat Folgendes geschrieben:
Mit einem einfachen "fill" in der Hilfe wäre es getan:

Zitat:
"Filled 2-D polygons"


mit

Zitat:
fill(X,Y,C) creates filled polygons from the data in X and Y with vertex color specified by C.


gekommen. Wenn ich das richtig verstanden habe, ist das genau das, was du suchst.

Grüße..


Nein, leider eben nicht. Die Hilfe bringt mich hier nicht weiter. Fuer den fill-Befehl wie auch poly2mask muss die Anordnung der Punkte stimmen, sonst ueberschneiden sie sich...
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 14.09.2010, 08:07     Titel:
  Antworten mit Zitat      
Oh sorry, es ist noch etwas früh Smile

Du brauchst natürlich convexHull, z.B.:

Code:
x = rand(10,1);
y = rand(10,1);
dt = DelaunayTri(x,y);
k = convexHull(dt);
plot(x,y, '.', 'markersize',10);
hold on;
plot(x(k), y(k), 'r');
hold off;


Und dann mit fill o.ä. auffüllen.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
RoyalFlush
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 27.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2010, 08:09     Titel:
  Antworten mit Zitat      
eupho hat Folgendes geschrieben:
Oh sorry, es ist noch etwas früh Smile

Du brauchst natürlich convexHull, z.B.:

Code:
x = rand(10,1);
y = rand(10,1);
dt = DelaunayTri(x,y);
k = convexHull(dt);
plot(x,y, '.', 'markersize',10);
hold on;
plot(x(k), y(k), 'r');
hold off;


Und dann mit fill o.ä. auffüllen.

Grüße


Danke fuer Deine Hilfe, aber das geht auch so nicht! Eine ConvexHull gibt mir die groesste Umhuellende ueber meinem Objekt aus. Ich brauche aber den genauen Kantenverlauf des Objektes...
Private Nachricht senden Benutzer-Profile anzeigen
 
bushmills
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 07.10.10
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 13.10.2010, 09:29     Titel:
  Antworten mit Zitat      
Hi zusammen,

bin gerade auf diesen Thread gestoßen, da ich vor dem selben Problem stehe. Meine Frage wäre daher, ob es dazu bereits eine Lösung gibt....
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 13.10.2010, 10:09     Titel:
  Antworten mit Zitat      
Moin,

wie wäre es mit "roifill". Da kannst Du die Koordinaten Deiner Punkte genau vorgeben. Irgendwie muß sich die Fläche dann noch farblich vom Bild abheben. Mit "roipoly" kannst Du händisch die Markierungen abnehmen und den Inhalt anzeigen lassem.

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
bushmills
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 07.10.10
Wohnort: ---
Version: R2010a
     Beitrag Verfasst am: 13.10.2010, 10:45     Titel:
  Antworten mit Zitat      
Die Funktion roifill hilft leider in diesem Fall nicht weiter.
Vielmehr ist es mein Ziel, aus den gegebenen, unsortierten Punkten ein Polygon zu formen. Diese Punkte stellen auch zwingend die Kontur des Polygons dar. Es ist also keine Punktewolke, die umrandet werden soll, sondern jeder Punkt liegt auf der Kante des Polygons.
Benutze ich dazu bspw. die patch-Funktion, so werden die Punkte zwingend nach ihrer Reihenfolge im Vektor verbunden und es entstehen die bereits weiter oben beschriebenen "Kreuzungen".
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: 13.10.2010, 10:58     Titel:
  Antworten mit Zitat      
Hallo bushmills,

Dein Problem ist gar nicht eindeutig definiert!
Zu einer beliebigen Punkt-Menge gibt es im Allgemeinen mehr als einen möglichen Zug von Kanten. Nimm z.B. vier Punkte auch den Ecken eines Quadrats und den Mittelpunkt dazu. Nun könnte jede Seite einen Knick nach innen zu Mittelpunkt haben.

Deshalb läßt sich Dein Problem auch nicht eindeutig lösen. Kannst Du weitere Zusatzbedingungen stellen, die die Lösung eindeutig machen? Im Endeffekt wirst Du dann aber nicht weit von Travelling-Salesman-Problem entfernt sein. Das bedeutet leider, dass das Ausprobieren aller Möglichkeiten eine praktikabele Lösung wäre...

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Atanas

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2013, 18:23     Titel: Selbst gebastelte Lösung
  Antworten mit Zitat      
Hier ist eine Lösung , die mir eingefallen ist:

1. Eine unsortierte Punktenmenge liegt vor als Parameter
2. Man fängt von Element 1 an
3. Diese Element wird von der Matrix entfernt
4. Am nähesten liegenden Punkt aus der Rest Matrix wird gesucht
5. Dieser Punkt wird von der Matrix entfernt
6 . Gehe zu 4 solange Matrix noch nicht leer ist

Der Code wird nicht in allen Fälle funktionieren. Ist meiner Meinung nach eine gute Basis für weitere Gedanken

[
function [ EBENE_NEU ] = Sortieren_Ebenen( EBENE )
%SORTIEREN_EBENEN Summary of this function goes here
% Detailed explanation goes here

X=EBENE(1,1);
Y=EBENE(1,2);
Z=EBENE(1,3);

EBENE(1,Smile=[];

EBENE_NEU=[X Y Z];

n=size(EBENE,1)
while n>0

Anz=size(EBENE,1);
Min=50000000000;
for i=1:Anz

R=sqrt(((EBENE(i,1)-X)*(EBENE(i,1)-X))+(EBENE(i,2)-Y)*(EBENE(i,2)-Y));

if R<Min
Min=R;
j=i;
end
end
X=EBENE(j,1);
Y=EBENE(j,2);
Z=EBENE(j,3);
EBENE(j,Smile=[];
EBENE_NEU=[EBENE_NEU; X Y Z];
n=n-1;
end
end
]

Sortieren_Ebenen.m
 Beschreibung:

Download
 Dateiname:  Sortieren_Ebenen.m
 Dateigröße:  754 Bytes
 Heruntergeladen:  554 mal
 
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.