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

fill3 Z-Werte von Polygon ändern

 

kohli311
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 09.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2018, 10:13     Titel: fill3 Z-Werte von Polygon ändern
  Antworten mit Zitat      
Hallo,

ich möchte mit der Funktion fill3 ein gefülltes Polygon zeichnen. Die Randbereiche des Polygons sind in den Vektoren x und y gespeichert, der Randbereich des Polygons wird auch korrekt dargestellt.
Ich möchte aber auch gleichzeitig z-Werte einzelner Punkte der Fläche ändern und zwar nicht nur am Randbereich, sondern auch von innenliegenden Punkten des Polygons. Auf die innenliegenden Punkte habe ich aber irgendwie keinen Zugriff (siehe Beispiel). Wahrscheinlich bräuchte es ein Gitternetz das das Polygon durchzieht und für das für alle Punkte innerhalb des Polygons jeder z-Wert definiert ist!? Stellt sich nur die Frage der Umsetzung.
Ich hoffe es ist einigermaßen verständlich was die Anforderung ist.
Danke schon mal im Voraus für Anregungen.
Anbei ein Code-Beispiel:

Code:

clear all
clc

x = [0; 1400; 1800; 2400; 2700; 2700; 1500; 0; -2700; -2700; -2700; -2400; -1800; -1400; 0];

y = [620; 620; 630; 660; 690; 750; 800; 800; 800; 730; 690; 660; 630; 620; 620];

z = [5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 4000 4000 4000 4000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 4000 4000 4000 4000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 4000 4000 4000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000;
    5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000];


h1 = fill3(x,y,z,z/5000);
xlabel('x axis');
ylabel('y axis');
zlabel('z axis');
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.09.2018, 11:16     Titel:
  Antworten mit Zitat      
Hallo,

was genau möchtest du nun ändern, wie versuchst du es, und was funktioniert daran nicht?

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
 
kohli311
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 09.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2018, 11:38     Titel:
  Antworten mit Zitat      
Im Endeffekt soll das Polygon von einem Gitter durchzogen sein, aber mit äquidistanten Abständen zwischen den Gitterpunkten. Das heißt im schmäleren Bereich des Polygons sind dann unter Umständen weniger Gitterpunkte. Zu jedem Gitterpunkt möchte ich den z-Wert selbst vorgeben können, sodas sich ein schräg in der z-Ebene liegendes Polygon ergeben kann.
Ein abknickender Verlauf der Polygonfläche soll auch möglich sein, d.h. es reicht nicht aus nur die z-Koordinaten entlang des Randes der Polygonfläche vorgeben zu können, deshalb auch das Gitter.
Sollte das mit der unterschiedlichen Anzahl an Gitterpunkten in verschiedenen Bereichen des Polygons nicht funktionieren, könnte ich auch mit einem Gitternetz zum Beispiel aus 10x10 Gitterpunkten leben, für welche die z-Koordinate vorgegeben werden kann.
Ziel ist also, ein schräg in der z-Ebene liegendes Polygon, das auch geknickten Verlauf aufweisen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
kohli311
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 09.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2018, 16:02     Titel:
  Antworten mit Zitat      
Ich habe das Ganze nun mit einem zugegebenermaßen etwas umständlichen Workaround gelöst. Im Prinzip habe ich mir das Gitter in der Polygonfläche aus einzelnen Polygonen selbst erzeugt. Dies wird dann sehr aufwändig, je mehr Gitterpunkte für das Hauptpolygon benötigt werden.
Nachfolgend ein Beispiel mit einem Polygon bestehend aus 4 Polygonen. Wenn mehr Gitterpunkte benötigt werden, müssen weitere Eckpunkte hinzugefügt und die Matrizen erweitert werden.

Code:

clear all
clc
         
C_N = 2000;
%Polygon 1 [x,y,z]
e11 = [100, 600, 2000];    %Ecke 1
e12 = [150, 500, 2000];    %Ecke 2
e13 = [450, 500, 1800];    %Ecke 3
e14 = [420, 600, 2000];    %Ecke 4

%Polygon 2
e21 = [e14(1), e14(2), e14(3)];
e22 = [e13(1), e13(2), e13(3)];
e23 = [800, 470, 2000];
e24 = [800, 600, 2000];

%Polygon 3
e31 = [e12(1), e12(2), e12(3)];
e32 = [130, 350, 2000];
e33 = [450, 370, 2000];
e34 = [e13(1), e13(2), e13(3)];

%Polygon 4
e41 = [e13(1), e13(2), e13(3)];
e42 = [e33(1), e33(2), e33(3)];
e43 = [800, 350, 2000];
e44 = [e23(1), e23(2), e23(3)];

%Matrizen aufbauen
X = [e11(1) e21(1) e31(1) e41(1);
     e12(1) e22(1) e32(1) e42(1);
     e13(1) e23(1) e33(1) e43(1);
     e14(1) e24(1) e34(1) e44(1)];
 
Y = [e11(2) e21(2) e31(2) e41(2);
     e12(2) e22(2) e32(2) e42(2);
     e13(2) e23(2) e33(2) e43(2);
     e14(2) e24(2) e34(2) e44(2)];
 
Z = [e11(3) e21(3) e31(3) e41(3);
     e12(3) e22(3) e32(3) e42(3);
     e13(3) e23(3) e33(3) e43(3);
     e14(3) e24(3) e34(3) e44(3)];
 
C = [e11(3)/C_N e21(3)/C_N e31(3)/C_N e41(3)/C_N;
     e12(3)/C_N e22(3)/C_N e32(3)/C_N e42(3)/C_N;
     e13(3)/C_N e23(3)/C_N e33(3)/C_N e43(3)/C_N;
     e14(3)/C_N e24(3)/C_N e34(3)/C_N e44(3)/C_N];

h1 = fill3(X,Y,Z,C);
axis([0 1000 300 700 0 2000]);
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 - 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.