Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
HT]); %
'g','Pos
50 HT]);
'g','Pos
t;
1];
%%
function InitHome
set(0,'Units','pixels')
dim = get(0,'ScreenSize');
fig_1 = figure('doublebuffer','on','Position',[0,35,dim(3)-200,dim(4)-11
0],...
'Name',' 3D Cartesian Robot Graphical Demo',...
'NumberTitle','off','CloseRequestFcn',@del_app);
hold on;
%Creamos las partes
XB=getappdata(0,'XB');
YB=getappdata(0,'YB');
ZB=getappdata(0,'ZB');
% La base, vertices y caras
VB1=getappdata(0,'VB1');
VB2=getappdata(0,'VB2');
FB=getappdata(0,'FB');
% Primer eglabon, vrticeg y caras
V1=getappdata(0,'V1');
F1=getappdata(0,'F1');
% Segundo eslabon, vrtices y caras
V2=getappdata(0,'V2');
F2=getappdata(0,'F2');
% Tercer eslabon, vrtices y caras
V3=getappdata(0,'V3');
F3=getappdata(0,'F3');
% Transformacin homogenea
TH=getappdata(0,'TH');
%------------------------------------Link01= (TH*VB1')';
Link02= (TH*VB2')';
% set(hB1,'vertices',Link01(:,1:3));
% set(hB2,'vertices',Link01(:,1:3));
d1ini=0;
d2ini=0;
d3ini=0;
% ALFHA,A,D,TETHA
T_01=tmat(d1ini,0,0,90);
T_12=tmat(-90,0,d2ini,90);
T_23=tmat(0,0,d3ini,0);
T_02 = T_01*T_12;
T_03=T_02*T_23;
Link1 = (T_01*V1')';
Link2 = (T_02*V2')';
Link3 = (T_03*V3')';
Link1H = (TH*Link1')';
Link2H = (TH*Link2')';
Link3H = (TH*Link3')';
[FFB,VVB]=surf2patch(XB,YB,ZB);
n=size(VVB,1);
VVB=[VVB ones(n,1)];
% cameratoolbar
% dibuja vertices y tapas
LB = patch('faces', FFB, 'vertices' ,VVB(:,1:3));
LB1=patch(XB(1,:),YB(1,:),ZB(1,:),'b');
LB2=patch(XB(2,:),YB(2,:),ZB(2,:),'b');
% graficamos la cancha y fichas
.05 .05 1 1;
-.05 .05 1 1;
-.05 -.05 1 1;
.05 -.05 1 1];
TB=tmat(0,1,0,0);
VB2=(TB*VB1')';
% rotacion y traslacion por z
alpha = 90;
% T=tmat(0,0 ,-.15, 0);
Rotx=tmat(alpha,0,0,0);
VB1=(Rotx*(VB1)')';
FB=[ 1 2 3 4;
5 6 7 8;
1 5 8 4;
2 6 7 3;
1 5 6 2;
4 8 7 3];
V1=[ .05 .05 -.25 1;
-.05 .05 -.25 1;
-.05 -.05 -.25 1;
.05 -.05 -.25 1;
.05 .05
1 1;
-.05 .05
1 1;
-.05 -.05
1 1;
.05 -.05
1 1];
F1=[ 1 2 3 4;
5 6 7 8;
1 5 8 4;
2 6 7 3;
1 5 6 2;
4 8 7 3];
V2=[ .075 .05 .05 1;
.075 -.05 .05 1;
.075 -.05 -.05 1;
.075 .05 -.05 1;
-.075 .05 .05 1;
-.075 -.05 .05 1;
-.075 -.05 -.05 1;
-.075 .05 -.05 1];
F2=F1;
V3=[ .005 .005 0 1;
-.005 .005 0 1;
-.005 -.005 0 1;
.005 -.005 0 1;
.005 .005 -1.3 1;
-.005 .005 -1.3 1;
-.005 -.005 -1.3 1;
.005 -.005 -1.3 1];
F3=F2;
%% Creacmos las fichas, en coordenadas de ficha
VF=[ 0 0 0 1;
1/3 0 0 1;
1/3 0 1/3 1;
0 0 1/3 1;
0 1/3 0 1;
1/3 1/3 0 1;
1/3 1/3 1/3 1;
0 1/3 1/3 1];
X=[0;0];
Y=[0;1];
Z=[0;0];
line(X,Y,Z,'Color','g');
X=[0;0];
Y=[0;0];
Z=[0;1];
line(X,Y,Z,'Color','b');
xlabel('X'),ylabel('Y'),zlabel('Z');
axis([-3 3 -3 3 -3 3])
grid on
subplot(2,2,2)
patch('faces',F1, 'vertices' ,V1(:,1:3),'FaceColor', 'y');
view(3)
X=[0;1];
Y=[0;0];
Z=[0;0];
line(X,Y,Z,'Color','r');
X=[0;0];
Y=[0;1];
Z=[0;0];
line(X,Y,Z,'Color','g');
X=[0;0];
Y=[0;0];
Z=[0;1];
line(X,Y,Z,'Color','b');
xlabel('X'),ylabel('Y'),zlabel('Z');
axis([-3 3 -3 3 -3 3])
grid on
subplot(2,2,3)
patch('faces',F2, 'vertices' ,V2(:,1:3),'FaceColor', 'g');
view(3)
X=[0;1];
Y=[0;0];
Z=[0;0];
line(X,Y,Z,'Color','r');
X=[0;0];
Y=[0;1];
Z=[0;0];
line(X,Y,Z,'Color','g');
X=[0;0];
Y=[0;0];
Z=[0;1];
line(X,Y,Z,'Color','b');
xlabel('X'),ylabel('Y'),zlabel('Z');
axis([-3 3 -3 3 -3 3])
grid on
subplot(2,2,4)
patch('faces',F3, 'vertices' ,V3(:,1:3),'FaceColor', 'b');
view(3)
X=[0;1];
Y=[0;0];
Z=[0;0];
line(X,Y,Z,'Color','r');
X=[0;0];
Y=[0;1];
Z=[0;0];
line(X,Y,Z,'Color','g');
X=[0;0];
Y=[0;0];
Z=[0;1];
line(X,Y,Z,'Color','b');
xlabel('X'),ylabel('Y'),zlabel('Z');
axis([-3 3 -3 3 -3 3])
grid on
end% MostrarPiezas
%%
function CartAni(d1fin,d2fin,d3fin,n)
dOld=getappdata(0,'dOld');
d1ini=dOld(1);
d2ini=dOld(2);
d3ini=dOld(3);
% % por el primer eje
V1=getappdata(0,'V1');
% Segundo eslabon, vrtices y caras
V2=getappdata(0,'V2');
% Tercer eslabon, vrtices y caras
V3=getappdata(0,'V3');
% el TH
TH=getappdata(0,'TH');
% recuperar los plots
L1=getappdata(0,'L1');
L2=getappdata(0,'L2');
L3=getappdata(0,'L3');
II=linspace(d1ini,d1fin,n);
for ii=II,
T_01=tmat(ii,0,0,90);
T_12=tmat(-90,0,d2ini,90);
T_23=tmat(0,0,d3ini,0);
T_02 = T_01*T_12;
T_03=T_02*T_23;
Link1 = (T_01*V1')';
Link2 = (T_02*V2')';
Link3 = (T_03*V3')';
Link1H = (TH*Link1')';
Link2H = (TH*Link2')';
Link3H = (TH*Link3')';
set(L1, 'Vertices', Link1H(:,1:3));
set(L2, 'Vertices', Link2H(:,1:3));
set(L3, 'Vertices', Link3H(:,1:3));
drawnow
end
% por el segundo eje
JJ=linspace(d2ini,d2fin,n);
for jj=JJ,
T_12=tmat(-90,0,jj,90);
T_02 = T_01*T_12;
T_03=T_02*T_23;
Link2 = (T_02*V2')';
Link3 = (T_03*V3')';
Link2H = (TH*Link2')';
Link3H = (TH*Link3')';
set(L2, 'Vertices', Link2H(:,1:3));
T_01=tmat(90,0,ii,90);
T_23=tmat(0,0,d3fin,0);
T_02 = T_01*T_12;
T_03=T_02*T_23;
Link1 = (T_01*V1')';
Link2 = (T_02*V2')';
Link3 = (T_03*V3')';
Link1H = (TH*Link1')';
Link2H = (TH*Link2')';
Link3H = (TH*Link3')';
set(L1, 'Vertices', Link1H(:,1:3));
set(L2, 'Vertices', Link2H(:,1:3));
set(L3, 'Vertices', Link3H(:,1:3));
drawnow
end
JJ=linspace(d2ini,d2fin,n);
for jj=JJ,
T_12=tmat(-90,0,jj,90);
T_02 = T_01*T_12;
T_03=T_02*T_23;
Link2 = (T_02*V2')';
Link3 = (T_03*V3')';
Link2H = (TH*Link2')';
Link3H = (TH*Link3')';
set(L2, 'Vertices', Link2H(:,1:3));
set(L3, 'Vertices', Link3H(:,1:3));
drawnow
end
end
%%
function d1_slider_button_press(h,dummy)
dOld=getappdata(0,'dOld');
d2fin=dOld(2);d3fin=dOld(3);
d1fin = get(h,'Value'); % rescatamos que valor tiene el slider
%
set(t5_edit,'string',slider_value);
CartAni(d1fin,d2fin,d3fin,n/10)
setappdata(0,'dOld',[d1fin d2fin d3fin]);
end
function d2_slider_button_press(h,dummy)
dOld=getappdata(0,'dOld');
d1fin=dOld(1);d3fin=dOld(3);
d2fin = get(h,'Value'); % rescatamos que valor tiene el slider
%
set(t5_edit,'string',slider_value);
CartAni(d1fin,d2fin,d3fin,n/10)
setappdata(0,'dOld',[d1fin d2fin d3fin]);
end
function d3_slider_button_press(h,dummy)
dOld=getappdata(0,'dOld');
d1fin=dOld(1);d2fin=dOld(2);
d3fin = get(h,'Value'); % rescatamos que valor tiene el slider
%
set(t5_edit,'string',slider_value);
CartAni(d1fin,d2fin,d3fin,n/10)
setappdata(0,'dOld',[d1fin d2fin d3fin]);
end
function Ir_button_press(h,dummy)
%
dOld=getappdata(0,'dOld');
%
d1ini=dOld(1);d2ini=dOld(2); d3ini=dOld(3);
d1fin=str2num(get(t1_edit,'String'));%x
d2fin=str2num(get(t2_edit,'String'));%y
d3fin=1-str2num(get(t3_edit,'String'));%1-z
CartAni(d1fin,d2fin,d3fin,n/2)
setappdata(0,'dOld',[d1fin d2fin d3fin]);
end
end