Как вы строите четырехбалочную связь? - PullRequest
0 голосов
/ 29 апреля 2020

Я знаю, что код до sr1, sr2, sr3 правильный, все остальное кажется правильным, но сюжет очень неправильный, что пошло не так?

enter image description here Я получил каждый формула из решения учебника и следовал за каждым шагом в matlab

Я должен спроектировать четырехбалочную связь, используя изображение.

% позиций

p1 = 0;
p1theta = 210;
p2x = -1.236;
p2y = 2.138;
p2theta = 147.5;
p3x = -2.5;
p3y = 2.931;
p3theta = 110.2;
o2x = -2.164;
o2y = -1.26;
o4x = 2.19;
o4y = -1.26;

%Vector angle and magnitudes:delta

p2=(p2x^(2)+p2y^(2))^(1/2);
d2=atand(p2y/p2x)+180;
p3=(3^(2)+p3y^(2))^(1/2);
d3=atand(p3y/p3x)+180;


%caluculating the angle changes
a2=p2theta-p1theta;       %alpha 2
a3=p3theta-p1theta;       %alpha 3 


%Right Hand Dyad
r1x=-o2x;
r1y=-o2y;
r2x=-o2x+p2x;
r2y=p2y-o2y;

r3x=p3x-o2x;
r3y=p3y-o2y;


%finding resultant
r1=((r1x^(2))+(r1y^(2)))^(1/2);
r2=((r2x^(2))+(r2y^(2)))^(1/2);
r3=((r3x^(2))+(r3y^(2)))^(1/2);


%finding angles: using s
sr1=atand(r1y/r1x);
sr2=atand(r2y/r2x);
sr3=atand(r3y/r3x)+180;


%solve for beta2 and beta3 or b2 and b3
c1=r3*cosd(a2+sr3)-(r2*cosd(a3+sr2));
c2=r3*sind(a2+sr3)-(r2*sind(a3+sr2));
c3=r1*cosd(a3+sr1)-(r2*cosd(sr3));
c4=r3*sind(sr3)-(r1*sind(a3+sr1));
c5=r1*cosd(a2+sr1)-(r2*cosd(sr2));
c6=r2*sind(sr2)-(r1*sind(a2+sr1));
disp(c1)

A1=-(c3^(2))-(c4^(2));
A2=c3*c6-c4*c5;
A3=-(c4*c6)-(c3*c5);
A4=(c2*c3)+(c1*c4);
A5=(c4*c5)-(c3*c6);
A6=(c1*c3)-(c2*c4);

k1=(A2*A4)+(A3*A6);
k2=(A3*A4)+(A5*A6);
k3=((A1^(2))-(A2^(2))-(A3^(2))-(A4^(2))-(A6^(2)))/2;

b31=2*atand(k2+((k1^(2))+(k2^(2))-(k3^(2)))/(k1+k3));
b32=2*atand(k2-((k1^(2))+(k2^(2))-(k3^(2)))/(k1+k3));

b3=b32;

b21=asind(((A5*sind(b3)+A3*cosd(b3))+A6)/A1);
b22=(asind((A3*sind(b3))+(A3*cosd(b3))+A4)/A1);
disp(b21)
disp(b21)
b2=b21;



%Left Hand Dyad using t 
t1x=-o4x;
t1y=-o4y;
t2x=p2x-o4x;
t2y=p2y-o4y;
t3x=-o4x+p3x;
t3y=-o4y+p3y;

%finding resultant
t1=((t1x^(2))+(t1y^(2)))^(1/2);
t2=((t2x^(2))+(t2y^(2)))^(1/2);
t3=((t3x^(2))+(t3y^(2)))^(1/2);

%finding angles: using z
zr1=atand(abs(t1y/t1x))+90;
zr2=atand(abs(t2y/t2x))+90;
zr3=atand(abs(t3y/r3x))+90;
disp(zr1)
disp(zr2)
disp(zr3)


c7=t3*cosd(a2+zr3)-t2*cosd(a3+zr2);
c8=t3*sind(a2+zr3)-t2*sind(a3+zr2);
c9=t1*cosd(a3+zr1)-t2*cosd(zr3);
c10=-t3*sind(zr3)-t1*sind(a3+zr1);
c11=t1*cosd(a2+zr1)-t2*cosd(zr2);
c12=t1*sind(zr2)-t1*sind(a2+zr1);

A7=-(c9^(2))-(c10^(2));
A8=(c9*c12)-(c10*c11);
A9=-(c10*c12)-(c9*c11);
A10=(c2*c9)+(c7*c10);
A11=(c10*c11)-(c9*c12);
A12=(c7+c9)-(c2*c10);

k4=(A8*A10)+(A9*A12);
k5=(A9*A10)+(A11*A12);
k6=((A7^(2))-(A8^(2))-(A9^(2))-(A10^(2))-(A12^(2)))/2;

%Gamma
g31=2+(atand(k5+(k4^(2)+k5^(2)-k6^(2))^(1/2)));
g32=2+(atand(k5-(k4^(2)+k5^(2)-k6^(2))^(1/2)));

g3=g32;

g21=acosd(((A11*sind(g3))+(A9*cosd(g3))+A12)/A7);
g22=acosd(((A9*sind(g3))+(A8*cosd(g3))+A10)/A7);

g2=g21;
disp(g2)
disp(g2)

%Solve for Wx,Wy,Zx,Zy

A=cosd(b2)-1;
B=sind(b2);
C=cosd(a2)-1;
D=sind(a2);
E=p2*cosd(d3);
F=cosd(b3)-1;
G=sind(b3);
H=cosd(a3)-1;
K=sind(a3);
L=p3*cosd(d3);
M=p2*sind(d2);
N=p3*sind(d3);

%matrices
MA=[A -B C -D;F -G H -K;B A D C;G F K H];
MC=[E;L;M;N];
MAI=inv(MA);

wz=MAI*MC;

wx1=wz(1,1);
wy1=wz(2,1);
zx1=wz(3,1);
zy1=wz(4,1);

%link 2  use phi
z1=(zx1^(2)+zy1^(2))^(1/2);
phi=atand(abs(zx1)/zy1)+90;
w1=(wx1^(2)+wy1^(2))^(1/2);
link2=w1;
ao2=atand(wy1/wx1);

%Solve for Ux,Uy,Sx,Sy
AA=cosd(g2)-1;
BB=sind(g2);
CC=cosd(a2)-1;
DD=sind(a2);
EE=p2*cosd(d3);
FF=cosd(g3)-1;
GG=sind(g3);
HH=cosd(a3)-1;
KK=sind(a3);
LL=p3*cosd(d3);
MM=p2*sind(d2);
NN=p3*sind(d3);

%matrices
MAA=[AA -BB CC -DD;FF -GG HH -KK;BB AA DD CC;GG FF KK HH];
MCC=[EE;LL;MM;NN];
MAAI=inv(MAA);

us=MAAI*MCC;

ux1=us(1,1);
uy1=us(2,1);
sx1=us(3,1);
sy1=us(4,1);

%link 4
s1=(sx1^(2)+sy1^(2))^(1/2);
psi=atand(sy1/sx1)+360; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
u1=(ux1^(2)+uy1^(2))^(1/2);
link4=u1;
ao4=atand(abs(ux1)/uy1)+90;


%Solve for lengths of links and grashof condition
%link3
vx1=zx1-sx1;
vy1=zy1-sy1;
v1=(vx1^(2)+vy1^(2))^(1/2);
ao3=atand(abs(vx1)/vy1)+90;
link3=v1;

%link1
gx=wx1+vx1-ux1;
gy=wy1+vy1-uy1;
g=(gx^(2)+gy^(2))^(1/2);
link1=g;
disp(link1)

%Grashof
sl=link3+link4;
pq=link1+link2;

%if sl>pq
    %disp('non grashof rocker rocker rocker')
%elseif pq>sl
        %disp('grashof')
        %if link3<link1&&link2&&link4
            %disp('rocker crank rocker')
        %elseif link2<link1&&link3&&link4
            %disp('crank rocker rocker')
        %elseif link1<link2&&link3&&link4
            %disp('crank crank crank')
        %else
            %disp('rocker rocker rocker')
        %end
%end




%find and plot positions for open configuration
x1=wx1+vx1-ux1-gx;
y1=wy1+vy1-uy1-gy;
x2=wx1;
y2=wy1;
x3=wx1+vx1;
y3=wy1+vy1;
x4=wx1+vx1-ux1;
y4=wy1+vy1-uy1;

wx2=w1*cosd(ao2+b2);
wy2=w1*sind(ao2+b2);
ux2=u1*cosd(ao4+g2);
uy2=abs(u1*sind(ao4+g2));
sx2=s1*cosd(psi+a2);
sy2=s1*sind(psi+a2);
zx2=z1*cosd(phi+a2);
zy2=z1*sind(phi+a2);
vx2=zx2-sx2;
vy2=zy2-sy2;

x5=wx2+vx2-ux2-gx;
y5=wy2+vy2-uy2-gy;
x6=wx2;
y6=wy2;
x7=wx2+vx2;
y7=wy2+vy2;
x8=wx2+vx2-ux2;
y8=wy2+vy2-uy2;

wx3=w1*cosd(ao2+b3);
wy3=w1*sind(ao2+b3);
ux3=u1*cosd(ao4+g3);
uy3=abs(u1*sind(ao4+g3));
sx3=s1*cosd(psi+a3);
sy3=s1*sind(psi+a3);
zx3=z1*cosd(phi+a3);
zy3=z1*sind(phi+a3);
vx3=zx3-sx3;
vy3=zy3-sy3;

x9=wx3+vx3-ux3-gx;
y9=wy3+vy3-uy3-gy;
x10=wx3;
y10=wy3;
x11=wx3+vx3;
y11=wy3+vy3;
x12=wx3+vx3-ux3;
y12=wy3+vy3-uy3;

X=[0 x2 x3 x4 x1 x6 x7 x8 x5 x10 x11 x12 x9];
Y=[0 y2 y3 y4 y1 y6 y7 y8 y5 y10 y11 y12 y9];
XY=plot(X,Y)
...