das Pn05 ist die Funktion in der die Koordinaten berechnet werden.
zu Beginn ist eine Kontur vorhanden, beispielsweise in 2D und diese wird in Abhängigkeit von x "gezogen" und somit entsteht ein 3 dimensionales gebilde
als Anlehnung ist es vllt vergleichbar mit einem Kreis der Beliebig in einem 3D Koordinatensystem liegt. dieser wird in Abhängigkeit von x extrudiert/gezogen. - Hierbei würde ein Schlauch entsehen.
man hat eine Mathematisch nicht beschreibbare Kontur im 2D bereich und extrudiert diese entlang einer Kurve( mathematisch bestimmt)
Ich bedanke mich für Ihre Hilfe, wenn auch vorerst keine Lösung gefunden werden konnte.
das erstellen von Pn05 war in mathcad einfacher, lässt sich aber in matlab besser erklären.
ich habe 40 startkoordinaten(x,y,z), diese sind aus Excel tabelle (von CAD datei) einglesen und zeigen eine Kontur
P=xlsread('Autopunkte_matlab.xls','B3:D42'); auslesen der Punkte
for p=1:1:40
X=P(p,1);
Y=P(p,2);
Z=P(p,3);
Für jeden Schleifendurchgang entsteht also ein neuer Punkt.
for x0=0:1:34.3
in der schleife für die Punkte wird eine weitere Schleife für x0 aufgerufen, alle 3 Punkte werden mit unterschiedlichen Funktionen umgeformt in denen x0 eine Variable ist.
Also entstehen für jeden einen Durchgang der Schleife 34 neue Punkte (xyz Koordinaten)
also 1360 Punkte insgesamt.
Diese entstandenen Koordinaten sind Pn05, abhängig von p und x0.
Das Verbinden von Punktewolken, so wie es mein Ziel war, ist mit surf nicht unbedingt möglich.
Dadurch, dass meine Punkte verstreut im Raum lagen und für ein XY-Wert mehrere Z-Werte existierten konnte ich eine Darstellung mit meshgrid, griddata, surf, etc. ausschließen.
Die Punkte sind in einer Excel Tabelle gespeichert.
Die Funktion patch ist dafür genau das Richtige. Ich habe mein Problem lösen können indem ich Eckpunkte und Flächen definiert habe (siehe Matlab-Hilfe, patch/faces und vertices)
Die Verbindung der Punkt, und das Erstellen einer Fläche zwischen den Punkten, geht, über patch.
Zuerst sollte man eine Matrix erstellen mit allen XYZ-Koordinaten
Die n-by-m matrix sagt aus, welche Punkte miteinander verbunden werden sollen
1 2 3 4 bedeutet, dass zwischen den Eckpunkten x1y1z1, x2y2z2, x3y3z3 und x4y4z4 eine Fläche aufgespannt werden soll.
in meinem Fall waren die Koordinaten in der Tabelle nach A und B geordnet (siehe eins der Bilder, da habe ich notiert was ich mit A und B meine)
mit einer Schleife konnte ich dann alle Punkte wie gewollt miteinander verbinden ( das funktioniert glaube ich nur so schön wenn die werte in meinem fall geordnet sind.
Code:
for d1=1:AK-1 %Definieren, welche Punkte verbunden werden sollen
ifmod(d1,SP)==0 %AK ist die Anzahl der zeilen in der Excel Tabelle
d1=d1+1; %d1 beschreibt die ausgewählte Zeile
end
f1=d1; %f1/2/3/4 ist die übergabe an die funktion faces,
f2=d1+1; %bestimmen welche eckpunkte verbunden werden
f3=d1+40; %sollen
f4=d1+41;
faces1=[f1 f2 f4 f3];
D(R3,:)=faces1; %erstellen der Face-matrix, schreiben in nächste
R3=R3+1; %zeile nach jedem durchlauf
d1=d1+1;
faces=D;
p1 = patch('Faces',faces,'Vertices',verts); %patch zum erstellen der Fläche
set(gca,'CLim',[-7050])
cdata = FW; %Farbe
set(p1,'FaceColor','flat','CData',cdata,'CDataMapping','scaled') hold on
xlabel('X'); %Achsenbeschriftung
ylabel('Y');
zlabel('Z');
colorbar;
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
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.