Verfasst am: 05.05.2016, 11:16
Titel: Kräfte in 3D darstellen
Ich möchte im Grunde genau wie im beigefügten Bild dargestellt, ein Koordinatensystem mit 4 Kräften haben. Dabei werden die Kräfte aus einem Arduino ausgelesen. Das Auslesen und anzeigen der Komponenten klappt ohne Probleme. Jedoch möchte ich diese nun noch grafisch darstellen. Den folgenden Code habe ich auf einen Button gelegt der ein Fenster öffnen und diese Kräfte darstellen soll.
Code:
%Hier mein Code
fx= 10; fy=10; fz=50;
w = [000];
x = [fx 00]; %Kraft in x-Richtung
y = [0 fy 0]; %Kraft in y-Richtung
z = [00 fz]; %Kraft in z-Richtung
r = x+y+z; %Resultierende Kraft
figure('Name','Plot Forces','OuterPosition',[4501801020720]) plot3([-0.50.5],[00],[00],'k',[00],[-0.50.5],[00],'k',[00],[00],[-0.50.5],'k','linewidth',1);
grid on
grid minor
hold on
p1 = arrow(x,w,'FaceColor','r','EdgeColor','r');
p2 = arrow(y,w,'FaceColor','g','EdgeColor','g');
p3 = arrow(z,w,'FaceColor','b','EdgeColor','b');
p4 = arrow(r,w,'FaceColor','m','EdgeColor','m');
plot3([-11],[-1-1],[-1-1]) plot3([11],[-1-1],[-11]) plot3([1-1],[-1-1],[11]) plot3([-1-1],[-1-1],[-11]) plot3([-11],[11],[-1-1]) plot3([11],[11],[-11]) plot3([1-1],[11],[11]) plot3([-1-1],[11],[-11]) plot3([11],[-11],[11]) plot3([11],[-11],[-1-1]) plot3([-1-1],[-11],[11]) plot3([-1-1],[-11],[-1-1]) axis square
hold off
legend([p1,p2,p3,p4],'Force X in [N]','Force Y in [N]','Force Z in [N]','Resultant Force in [N]','Location','northeast');
xlabel('x-axis[N]');
ylabel('y-axis[N]');
zlabel('z-axis[N]');
Ich habe beispielhaft die Kräfte erstmal festgelegt. Dies ersetze ich dann später durch die ausgelesenen.
In der Mitte sollte sich ein Würfel befinden auf den die Kräfte zeigen.
Zu meinen Problemen:
1) Ich wollte die gleich Achsenlängen haben, aber egal ob ich mit axis equal oder square oder anderen Befehlen arbeite, die Z-Achse ist immer verschieden lang.
2) Ist es möglich das Koordinatensytem mit einem Befehl genau so wie im beigefügten Bild darzustellen.
3) Warum werden die Pfeile der Vektoren mit dem Befehl Arrow nicht gleich dargestellt? Bei x ,y ,z sind sie viel zu klein und die Größe der Resultierenden passt perfekt obwohl ich keine Größeneinstellungen bei dem Befehl arrow vorgegeben habe.
4) Ich wollte eine Beschriftung direkt am Vektor einfügen. Finde aber keine Befehl dazu. Z.B. den Betrag des Vektors.
5) Gibt es einen einfachen Befehl um die Schrittweite der Achsenskalierung festzulegen. Für feste Achsen klappt das ja mit xTick aber bei variablen Längen bin ich mir nicht mehr sicher.
Ich hoffe Ihr könnt mir helfen. Bin ein Matlab Neuling und hänge seit Tagen schon an diesen Problemen und finde im Internet leider auch keine Lösung dazu.
Über Optimierungsvorschläge zu meinem Code würde ich mich auch sehr freuen.
Verfasst am: 06.05.2016, 20:03
Titel: Re: Kräfte in 3D darstellen
Zitat:
1) Ich wollte die gleich Achsenlängen haben, aber egal ob ich mit axis equal oder square oder anderen Befehlen arbeite, die Z-Achse ist immer verschieden lang.
5) Gibt es einen einfachen Befehl um die Schrittweite der Achsenskalierung festzulegen. Für feste Achsen klappt das ja mit xTick aber bei variablen Längen bin ich mir nicht mehr sicher.
Ausprobieren?
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
1) aber dann ist mein Problem doch nicht gelöst. Was ist wenn y Achse länger ist als die z Achse dann sieht man diesen Vektor ja gar nicht mehr vollständig. Das Problem ist ja das die Vektoren je nach Kraft auf die Messdosen verschieden lang sein können oder ich habe deine Antwort falsch verstanden.
2) Dann sieht es ja nicht genau so aus wie auf dem Bild sondern wurde nur gedreht.
4) Text am Vektor geht also nicht? Sondern nur an einer Postion. Habe ich das richtig verstanden?
zu 5) Skalierung passt nach dem Anpassen der Achsenlänge
Einstellungen und Berechtigungen
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.