In[]:=
Dynamic[Manipulate[(*centrecoordinates*)v0={0,0,0};(*halftheangleoftwolinesalongwhichthetwoendsofabarhavetorun."polygon"hereisavariable:itisanintegerdetermininghowmanypartsareusedinaring,i.e.thenumberofsidesoftheenvelopingpolygon*)Δ=Pi/polygon;(*ycoordinateofpointB,whichisoneendofabar.Itismadeequalto"lift",whichrepresentsthemovement*)By=lift;(*xcoordinateofpointB*)Bx=ByTan[Δ];(*verticalcoordinateofpointBiszero,sinceweconsiderthatthemovementtakesplaceinahorizontalplane*)Bz=0;(*CoordinatesofpointB1andB2,whicharesymmetrictotheaxis*)vB1={-Bx,By,Bz};vB2={Bx,By,Bz};(*PointAisthehinge,wheretwobarsareconnected.Itmovesalongtheaxis.ThedistanceofABisassumedtobe1.Thisishalfofabar*)Ay=By+Sqrt[1-Bx^2];Ax=0;Az=0;vA={Ax,Ay,Az};(*PointPandQaretheendpointsoftwolinesstartedfromtheorigin.*)Py=6;Pz=0;Px=PyTan[Δ];vP={-Px,Py,Pz};vQ={Px,Py,Pz};(*linestoPandQfromtheorigin*)line1=Line[{v0,vP}];line2=Line[{v0,vQ}];(*centralline,dashed*)linec={Dashed,Line[{v0,{0,8,0}}]};(*wislinefromPointAtoline1perpendicularly*)w=AySin[Δ];(*visthethirdsideofatriangleformedbytheBA(whichis1)andw*)v=Sqrt[1-w^2];(*uistheradialdistanceofPointBfromtheorigin*)u=Sqrt[Bx^2+By^2];(*PointC1andC2aretheendsofbar,whichhavetorunonline1andline2.SinceACis1,arectangulartirangleappearsherewithsidesAC,vandw,correspondingtotriangleAB,w,v,thereforetheradialdistanceofPointCis2v+u*)Cx=(2v+u)Sin[Δ];Cy=Cx/Tan[Δ];Cz=0;vC1={Cx,Cy,Cz};vC2={-Cx,Cy,Cz};(*Thebarsaredepictedwithcylindersestablshedbetweengivenpoints."size"heremeansthediameter*)size=0.04;barB1={RGBColor[1,.47,0],Cylinder[{vA,vB1},size]};barB2=Cylinder[{vA,vB2},size];barC1={RGBColor[1,.47,0],Cylinder[{vA,vC1},size]};barC2=Cylinder[{vA,vC2},size];(*TheHobermanscrissor,whichinrealityconsistsoftwocrossedbars,isassembledherefromfourbars."cross1"isaunit,whichcombinesthefourbarsandthethreelines,The"If"hereisaconditiontoshowornottoshowtheotherbar*)cross1={line1,line2,linec,barB1,barC1,If[baro,{barB2,barC2},{}]};(*hoberisproducedbyrepeatingtheunitcross1a"number"oftimesafterrotatingaroungaxisz{0,0,1}byi*2Δ*)hober=Table[Rotate[cross1,i2Δ,{0,0,1}],{i,number}];(*textaddedatgivencoordinates*)tA=Text[Style["A",Blue,Bold,24],vA];tB1=Text[Style["B1",20],vB1];tB2=Text[Style["B2",20],vB2];tC1=Text[Style["C1",30],vC1];tC2=Text[Style["C2",30],vC2];(*allobjectsarecombined*)Graphics3D[{tA,tB1,tB2,tC1,tC2,cross1,If[scissors,hober,{}]},(*Graphics3Doptionsstarthere*)ImageSize{400,400},ViewAnglePi/14,ViewPoint{0,0,3},SphericalRegionTrue,BoxedFalse],{{baro,False,"show other bar"},{True,False}},{{polygon,15,"polygon"},{6"6",10"10",15"15",30"30"},ImageSizeTiny},{{lift,3,"lift"},0,Cos[Pi/polygon]/Tan[Pi/polygon],ImageSizeTiny},{{scissors,False,"show scissors"},{True,False}},{{number,1,"scissors No"},1,polygon,1,Appearance"Labeled",ImageSizeTiny},ControlPlacementLeft,TrackedSymbolsManipulate]]
Out[]=
In[]:=
(*thisshowshowthecoordinatesofPontCarecalcultedwiththehelpofaintermadiatePointV*)Vx=-wCos[Δ];Vy=By+vCos[Δ];Vz=0;vV={Vx,Vy,Vz};AV=Line[{vA,vV}];tV=Text[Style["V",24,Red],vV];(*sphereorcylnderplacesatthenodes*)sC1=Sphere[{vC1},0.14];sC2=Cylinder[{{-(2v+u)Sin[Δ],Cx/Tan[Δ],-0.3},{-(2v+u)Sin[Δ],Cx/Tan[Δ],0.3}},0.14];Graphics3D[{sC1,sC2,tV,AV,tA,tB1,tB2,tC1,tC2,cross1,barB2,barC2},ViewPoint{0,0,4},SphericalRegionTrue,BoxedFalse]
Out[]=

