我怎样才能绘制一个带有所有铰链和梁的四连杆机构,就像图中这样?
我刚刚开始使用 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)));