如何绘制带质心的四连杆机构?

如何绘制带质心的四连杆机构?

在此处输入图片描述

我怎样才能绘制一个带有所有铰链和梁的四连杆机构,就像图中这样?

我刚刚开始使用 LaTex...这是我所做的:

\begin{document}
\begin{tikzpicture}

\point{a}{0}{0};
\point{first}{-1}{0};
\notation{1}{first}{A};
\support{1}{a};
\hinge{1}{a};

\point{d}{0.9}{0};
\point{first}{0.8}{0.1};
\notation{1}{first}{D};
\beam{4}{a}{d};
\support{1}{d};
\hinge{1}{d};

\point{b}{-1.6485}{4.2945};
\point{first}{-1.6485}{4.2945};
\notation{1}{first}{B};
\hinge{1}{b};
\beam{4}{b}{a};


\point{c}{3.7241}{2.3905};
\point{first}{3.7241}{2.3905};
\notation{1}{first}{C};
\hinge{1}{c};
\beam{4}{b}{c};
\beam{4}{c}{d};


\draw [->] (0,0) -- (10,0) node [above left]  {$\operatorname{X} $};
\draw [->] (0,0) -- (0,10) node [below right] {$\operatorname{Y} $};

\coordinate (x) at (0.3,0);
\coordinate (y) at (0,0.3);

\coordinate (w) at (2,0);
\coordinate (k) at (-0.4,4.2945);

\draw pic[draw, "$\theta_2$", ->, angle eccentricity=1.3,angle radius = 
0.6cm] {angle = x--a--b}; 
\draw pic[draw, "$\theta_4$", ->, angle eccentricity=1.3,angle radius = 1cm] 
{angle = w--d--c};
\draw pic[draw, "$\theta_3$", ->, angle eccentricity=1.3,angle radius = 1cm] 
 {angle = k--b--a};

\draw (-1.6485,4.2945) -- (-0.5,4.2945);
\draw [dash dot] (-1.6485,4.2945) -- (.9,0);

% I wanna make the center of mass and place it where a want...


\end{tikzpicture}
\end{document}

结果如下: 在此处输入图片描述

答案1

Asymptote版本:

// "linkage.asy"
//    run 
//  asy linkage.asy
//    to get a standalone image "linkage.pdf"
//
settings.tex="pdflatex";
import graph;
import geometry;
size(8cm);
import fontsize;defaultpen(fontsize(8pt));
texpreamble("\usepackage{lmodern}"+"\usepackage{amsmath}"+"\usepackage{amsfonts}"+"\usepackage{amssymb}");

pen linePen=darkblue+1bp;
pen dashPen=orange+0.7bp+linetype(new real[]{5,5})+linecap(0); //squarecap =linecap(0)
pen supPen=gray(0.36)+0.3bp;

arrowbar arrs=Arrows(SimpleHead,size=3);

real w=24, h=15, r=5, R=100;
real d=385;
real psi0=80, psi =50;
real AB=400;
real c=257;

pair A0=(180,130);
pair B0=A0+d;
pair B1=rotate(psi0,B0)*(B0+c);
pair B2=rotate(psi,B0)*B1;
pair A1=A0+R*unit(B1-A0);
pair A2=A0+R*unit(A0-B2);

void pivot(pair sh, pen fillPen=white, pen edgePen=linePen, pen basePen=linePen+2*bp+extendcap){
  transform tr=shift(sh);
  pair C=(0,h);
  guide g=(w/2,0)--(w/2,h)--arc(C,w/2,0,180)--(-w/2,0)--cycle;
  filldraw(tr*g^^tr*circle(C,r),fillPen,edgePen);
  pair A=tr*(-20,0);
  pair B=tr*( 20,0);
  int n=10;
  real di=(B.x-A.x)/n;
  for(int i=0;i<n+1;++i) xtick(z=A+(i*di,0),dir=plain.SSW,size=ticksize,p=basePen+0.4*bp);
  draw(A--B,basePen);
}

guide gsup=(0,0)--(50,0);

draw(A0--B1--B0,linePen);
draw(A2--B2--B0,linePen);
draw(circle(A0,R),dashPen);
draw(arc(B0,B1,B2),dashPen);
draw(shift(A0+20)*gsup,supPen);
draw(shift(B0+20)*gsup,supPen);
pivot(A0-(0,h));
pivot(B0-(0,h));

label("$A_0$",A0,2*plain.W);
label("$B_0$",B0,2*plain.W);
dot("$A_1$",A1,plain.ESE,UnFill);
dot("$A_2$",A2,plain.SW,UnFill);
dot("$B_1$",B1,plain.NE,UnFill);
dot("$B_2$",B2,plain.NW,UnFill);

markangle(Label("$\theta_0$",Relative(0.5)),n=1,radius=-18,B1,A0,B0,p=linePen+0.3bp,arrs);
markangle(Label("$\theta$",Relative(0.5)),n=1,radius=-46,B2,A0,B1,p=linePen+0.3bp,arrs);
markangle(Label("$\psi_0$",Relative(0.5)),n=1,radius=-10,B1,B0,B0+plain.E,p=linePen+0.3bp,arrs);
markangle(Label("$\psi$",Relative(0.5)),n=1,radius=-14,B2,B0,B1,p=linePen+0.3bp,arrs);

label("$a$",(A0+A2)/2,plain.SE);
label("$b$",A1*(1-0.6)+B1*0.6,plain.N);
label("$c$",(B0+B1)/2,plain.SE);
label("$d=A_0B_0$",(A0+R+B0)/2);
shipout(bbox(Fill(paleyellow)));

在此处输入图片描述

相关内容