banner



Enabling 3d Data Loading App Designer In Matlab

I am trying to transcribe one of my scripts into App Designer in Matlab so that I easily distribute it to students. The idea is to show forces and moments acting in 6 degrees of freedom on a vehicle in real time (based on user input through a joystick). I am using a very simplistic animation made of multiple 3D arrow plots at the moment (which refreshes every 0.1 s), but it does the job. What I would like to get is shown in the first figure, whereas the second figure shows what I actually get in App Designer.

The relevant lines of code in App Designer which I use for the plotting are as follows:

          function plot_ROV(app)             % Plot the forces and moments acting on the ROV in the correct graph:             quiver3(app.UIAxes,0,0,0,1,0,0);             hold(app.UIAxes);             quiver3(app.UIAxes,0,0,0,0,1,0);             hold(app.UIAxes);             quiver3(app.UIAxes,0,0,0,0,0,1);             hold(app.UIAxes);             quiver3(app.UIAxes,0,0,0,app.Surge,0,0,'LineWidth',5,'Color',app.Colors(1,:));             hold(app.UIAxes);             quiver3(app.UIAxes,0,0,0,0,app.Sway,0,'LineWidth',5,'Color',app.Colors(2,:));             hold(app.UIAxes);             quiver3(app.UIAxes,0,0,0,0,0,app.Heave,'LineWidth',5,'Color',app.Colors(3,:));             hold(app.UIAxes);             app.circular_arrow3([1,0,0],app.Roll,0.2,app.Colors(4,:));             hold(app.UIAxes);             app.circular_arrow3([0,1,0],app.Pitch,0.2,app.Colors(5,:));             hold(app.UIAxes);             app.circular_arrow3([0,0,1],app.Yaw,0.2,app.Colors(6,:));             hold(app.UIAxes);             legend(app.UIAxes,'x-axis','y-axis','z-axis','surge','sway','heave','roll','roll',...                 'pitch','pitch','yaw','yaw','Location','BestOutside');         end          function circular_arrow3(app,axis,angle,radius,color)             % Generate the data for the circle in 2D space:             np = 10;   % no. points             a = linspace(0,angle*pi,np);             p = [radius.*cos(a);radius.*sin(a);zeros(1,np)];              % Select the correct rotation matrix depending on the axis:             if sum((axis-[1,0,0]).^2)==0                 R = [0,0,1;0,1,0;-1,0,0];             elseif sum((axis-[0,1,0]).^2)==0                 R = [1,0,0;0,0,-1;0,1,0];                 p(2,:) = - p(2,:);             elseif sum((axis-[0,0,1]).^2)==0                 R = eye(3);             else                 error('Only rotations about the x-, y- and z-axes are supported');             end              % Rotate the points:             pr = zeros(size(p));             for i=1:np                 pr(:,i) = R*p(:,i);             end              % Calculate the difference between the last two points:             x = pr(1,end);             y = pr(2,end);             z = pr(3,end);             u = pr(1,end)-pr(1,end-1);             v = pr(2,end)-pr(2,end-1);             w = pr(3,end)-pr(3,end-1);              % Plot the points:             plot3(app.UIAxes,pr(1,:),pr(2,:),pr(3,:),'LineWidth',4,'Color',color);             hold(app.UIAxes);             quiver3(app.UIAxes,x,y,z,u,v,w,'LineWidth',6,'Color',color);         end                  

Now, by comparing the two figures, I think my problem is that the hold command is not working, at least not the way I intend it to: only the points from the last circular arrow are shown. Since I do not have much experience with App Designer, my feeling is I must have done a basic mistake.

Thanks in advance for the help!

Desired Figure What I am getting in App Designer at the moment

Enabling 3d Data Loading App Designer In Matlab

Source: https://stackoverflow.com/questions/51168265/animation-made-of-multiple-3d-plots-in-matlab-app-designer

Posted by: mahaffeymersed.blogspot.com

0 Response to "Enabling 3d Data Loading App Designer In Matlab"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel