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

Oberfläche schließen

 

schwappi
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2013, 22:35     Titel: Oberfläche schließen
  Antworten mit Zitat      
Hallo miteinander,

ich habe eine offene Oberfläche und würde die gerne schließen um anschließend mit dem Gaußschen Integralsatz das Volumen zu berechnen.

Im Anhang ist die besagte Oberfläche und anbei mein kleiner Codeschnipsel wie ich dazu komm.
matrix ist mehr oder weniger ein Graustufenbild.
Code:
figure;
m2 = matrix(1:50,1:50);
[height, width] = size(m2);
[X, Y] = meshgrid(1:width, 1:height);
tri = delaunay(X, Y);
trisurf(tri,X,Y,m2);


Ich hab gerade keine Idee wie ich das am besten hinbekomme.

Falls es andere, elegantere, Lösungen zur Volumenbestimmung gibt freue ich mich über jeden Ansatz bzw. jeder Hilfe!

Edit:
Natürlich geht es mir dabei um das Volumen des "Kelches". Die "glatte" Fläche oberhalb kann natürlich auch vernachlässigt werden.
Zudem weiss ich, das diese Form immer oben offen ist geschlossen werden muss.

Ich habe auch eine Höhe, bei der ich eine Fläche über die ganze xy-Ebene aufziehen könnte. Gibt es dafür eventuell schon eine Matlabfunktion, bei der ich die geschlossene Fläche aus den beiden dann bekommen könnte?

Danke und beste Grüße,
schwappi

test.png
 Beschreibung:
offene Oberfläche

Download
 Dateiname:  test.png
 Dateigröße:  16.94 KB
 Heruntergeladen:  474 mal
Private Nachricht senden Benutzer-Profile anzeigen


schwappi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2013, 12:49     Titel:
  Antworten mit Zitat      
Hi,
also ich bin ein bisschen weitergekommen...
Code:
m2 = matrix(1:50,1:50);
maxi = max(m2(:))+10;
m2(m2 >= (mean([hix, hiy])-abs(min(m2(:))))) = maxi;
m4 = zeros(size(m2));
m4(m2 ~= maxi) = mean([hix, hiy])-abs(min(m2(:)));
m4(m4 == 0) = NaN;
m2(m2 == maxi) = NaN;

[h2, w2] = size(m2);
[X2, Y2] = meshgrid(1:w2, 1:h2);
tri2 = delaunay(X2, Y2);
figure; trisurf(tri2 ,X2, Y2, m2);

[h4, w4] = size(m4);
[X4, Y4] = meshgrid(1:w4, 1:h4);
tri4 = delaunay(X4, Y4);
hold on; trisurf(tri4, X4, Y4, m4);


Durch diesen Code komm ich zu einer Oberfläche unterhalb eines gewissen Wertes und einer Deckfläche.

Wie kann ich diese beiden Flächen jetzt am besten verknüpfen?
Also die Randpunkte sollen miteinander vernetzt werden.

Beste Grüße,
schwappi

test2.png
 Beschreibung:
Flächen

Download
 Dateiname:  test2.png
 Dateigröße:  46.52 KB
 Heruntergeladen:  394 mal
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 21.08.2013, 12:52 Uhr von denny
Von Programmierung nach Grafiken und Plots
 
schwappi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 27.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2013, 18:29     Titel:
  Antworten mit Zitat      
Ich hab es jetzt gelöst.

Falls jemand vielleicht mal dasselbe Problem hat:
Code:
m2 = m;
maxi = max(m2(:))+10;
m2(m >= hi) = maxi;
m2(m2 == maxi) = NaN;

[h, w] = size(m2);
[x, y] = meshgrid(1:w, 1:h);
points = [x(:), y(:), m2(:)];
points(any(isnan(points(:, 3)), 2), :) = [];
dt = DelaunayTri(points);
[tri, x2]= freeBoundary(dt);
trisurf(tri,x2(:,1),x2(:,2),x2(:,3), x2(:,3), ...
    'EdgeAlpha', 1, 'FaceColor', 'interp');
set(gca, 'xticklabel', [], 'yticklabel', [], 'zticklabel', []);
colormap autumn;
 


Wobei m der Matrixausschnitt ist und hi eine berechnete Höhe aber der ich alles darüber lösche.

Das ganze sieht dann so aus wie im Anhang.

Danke trotzdem, falls sich mal jemand ein paar Gedanken gemacht hat.

vol.png
 Beschreibung:
geschlossene Hüllfläche fürs Volumen

Download
 Dateiname:  vol.png
 Dateigröße:  21.18 KB
 Heruntergeladen:  443 mal
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.