A spirális Yoshimura alakzat mint mechanizmus TDK Dolgozat 2011 Készítette: Baranyi Tamás Konzulens: dr. Sajtos István
Tartalomjegyzék [2]
A spirális Yoshimura alakzat mint mechanizmus 0. Absztrakt [3]
1. Bevezetés 1. ábra 2. ábra [4]
2. A spirális Yoshimura-alakzat geometriája 3. ábra [5]
3. Guest kísérletei 4. ábra 5. ábra 6. ábra [6]
7. ábra 8. ábra [7]
4. Az alakzat mint mechanizmus 9. ábra [8]
10. ábra 11. ábra [9]
5. Nyitható-csukható szerkezet 12. ábra 6. Összefoglalás 7. Köszönetnyilvánítás [10]
8. Irodalomjegyzék [11]
9. Mellékletek: [12]
clear;clc; [filename, pathname] = uigetfile({'*.dxf'},'open File','Multiselect','off'); % choose file to open addpath(pathname); % add path to the matlab search path fid=fopen(filename); % open file Cs=textscan(fid,'%s'); % read dxf file as cell array of strings Cs fclose(fid); % close file to accelerate further computation Cs=Cs{1,1}; % reshape array indline=strcmp('acdbline', Cs); % get line no. of LW polylines linenum=sum(indline); % get total number of lines indline=find(indline == 1); % get line no. of lines indtipus=indline-2; %vonalfajta eldöntő sorszáma E=Cs(indtipus); R=strcmp('rudak',E); Ru=sum(R); %hány rudam van T=strcmp('tamaszok',E); Ta=sum(T); %hány támaszruddam van Q=strcmp('terhek',E); Qu=sum(Q); %hány terhem van rudak=zeros(2*ru,4); tamaszok=zeros(2*ta,4); %preallocating terhek=zeros(2*qu,4); r=1; t=1; q=1; for i=1:linenum % some funny indexing ten=strcmp('10',cs(indline(i):indline(i)+2)); ten=find(ten == 1); if R(i)==1 rudak(2*r-1,1)=i; rudak(2*r-1,2)=str2double(cs(indline(i)+ten)); % x start rudak(2*r-1,3)=str2double(cs(indline(i)+ten+2)); % y start rudak(2*r-1,4)=str2double(cs(indline(i)+ten+4)); % z start ten=strcmp('10',cs(indline(i):indline(i)+2)); ten=find(ten == 1); rudak(2*r,1)=i; rudak(2*r,2)=str2double(cs(indline(i)+ten+6)); % x rudak(2*r,3)=str2double(cs(indline(i)+ten+8)); % y rudak(2*r,4)=str2double(cs(indline(i)+ten+10)); % z r=r+1; elseif T(i)==1 tamaszok(2*t-1,1)=i; tamaszok(2*t-1,2)=str2double(cs(indline(i)+ten)); % x start tamaszok(2*t-1,3)=str2double(cs(indline(i)+ten+2)); % y start tamaszok(2*t-1,4)=str2double(cs(indline(i)+ten+4)); % z start ten=strcmp('10',cs(indline(i):indline(i)+2)); ten=find(ten == 1); tamaszok(2*t,1)=i; tamaszok(2*t,2)=str2double(cs(indline(i)+ten+6)); % x tamaszok(2*t,3)=str2double(cs(indline(i)+ten+8)); % y tamaszok(2*t,4)=str2double(cs(indline(i)+ten+10)); % z t=t+1; elseif Q(i)==1 terhek(2*q-1,1)=i; terhek(2*q-1,2)=str2double(cs(indline(i)+ten)); % x start terhek(2*q-1,3)=str2double(cs(indline(i)+ten+2)); % y start terhek(2*q-1,4)=str2double(cs(indline(i)+ten+4)); % z start ten=strcmp('10',cs(indline(i):indline(i)+2)); ten=find(ten == 1); terhek(2*q,1)=i; terhek(2*q,2)=str2double(cs(indline(i)+ten+6)); % x terhek(2*q,3)=str2double(cs(indline(i)+ten+8)); % y terhek(2*q,4)=str2double(cs(indline(i)+ten+10)); % z q=q+1; clear cont indline indnum ten k linenum ans fid filename i pathname r t q % delete garbage from workspace n=2*ru; CA=zeros(n,3); %atmeneti csp matrix for i=1:n CA(i,1)=rudak(i,2); CA(i,2)=rudak(i,3); CA(i,3)=rudak(i,4); C=[CA(1,1),CA(1,2),CA(1,3)]; c=1; tu=0.001; %tures [13]
for i=2:n k=zeros(1,n); Ca=[CA(i,1),CA(i,2),CA(i,3)]; for j=1:c Cb=[C(j,1),C(j,2),C(j,3)]; if abs(ca(1)-cb(1))<tu && abs(ca(2)-cb(2))<tu && abs(ca(3)-cb(3))<tu k(j)=1; s=sum(k); if s==0 C(c+1,1)=CA(i,1); C(c+1,2)=CA(i,2); C(c+1,3)=CA(i,3); c=c+1; e=zeros(ru,3); %preallocate for i=1:ru rk=[rudak(2*i,2),rudak(2*i,3),rudak(2*i,4)]; rj=[rudak(2*i-1,2),rudak(2*i-1,3),rudak(2*i-1,4)]; rjk=rk-rj; rjkt=transpose(rjk); Z=rjk/sqrt(rjk*rjkt); e(i,1)=z(1); e(i,2)=z(2); e(i,3)=z(3); clear Z G=zeros(3*c,Ru+Ta); %preallocate for i=1:ru for j=1:c if abs(rudak(2*i-1,2)-c(j,1))<tu && abs(rudak(2*i-1,3)-c(j,2))<tu && abs(rudak(2*i-1,4)-c(j,3))<tu G(3*j-2,i)=e(i,1); G(3*j-1,i)=e(i,2); G(3*j,i)=e(i,3); if abs(rudak(2*i,2)-c(j,1))<tu && abs(rudak(2*i,3)-c(j,2))<tu && abs(rudak(2*i,4)-c(j,3))<tu G(3*j-2,i)=-e(i,1); G(3*j-1,i)=-e(i,2); G(3*j,i)=-e(i,3); clear i j %takarit et=zeros(ta,3); %preallocate for i=1:ta rk=[tamaszok(2*i,2),tamaszok(2*i,3),tamaszok(2*i,4)]; rj=[tamaszok(2*i-1,2),tamaszok(2*i-1,3),tamaszok(2*i-1,4)]; rjk=rk-rj; rjkt=transpose(rjk); Z=rjk/sqrt(rjk*rjkt); et(i,1)=z(1); et(i,2)=z(2); et(i,3)=z(3); %tamasz egységvektora clear rk rj rjk Z for i=1:ta for j=1:c if abs(tamaszok(2*i-1,2)-c(j,1))<tu && abs(tamaszok(2*i-1,3)-c(j,2))<tu && abs(tamaszok(2*i-1,4)- C(j,3))<tu G(3*j-2,Ru+i)=et(i,1); G(3*j-1,Ru+i)=et(i,2); G(3*j,Ru+i)=et(i,3); if abs(tamaszok(2*i,2)-c(j,1))<tu && abs(tamaszok(2*i,3)-c(j,2))<tu && abs(tamaszok(2*i,4)- C(j,3))<tu G(3*j-2,Ru+i)=-et(i,1); G(3*j-1,Ru+i)=-et(i,2); G(3*j,Ru+i)=-et(i,3); [14]
for i=1:3*c*(ru+ta) if abs(g(i))<tu G(i)=0; osszehas=min(3*c,ru+ta); delta=max(3*c,ru+ta)-rank(g) if 3*c==Ru+Ta if delta==0 display('stat. határozott') else display('egyszerre stat. túlhatározott és határozatlan') elseif 3*c>Ru+Ta if rank(g)-osszehas==0 display('stat. túlhatározott') else display('egyszerre stat. túlhatározott és határozatlan') else if rank(g)-osszehas==0 display('stat. határozatlan') else display('egyszerre stat. túlhatározott és határozatlan') [15]