Vernier Caliper of Precision 0.05 mm

RandomKsublist[set_,k_]:=Module[{sub={},rest=set,new},
Do[new=rest[[RandomInteger[{1,Length[rest]}]]];sub=Append[sub,new];rest=Complement[rest,{new}],{k}];sub];

Manipulate[SeedRandom[ranint];With[{k=2.5k1/1000},With[{prava=Round[2k*1000]/1000.,prr=IntegerPart[2k*10]/10.},With[{choices=Table[prr+i 5/1000.,{i,0,19}]},If[sh,Column[{Graphics[{{GrayLevel[0.7],Polygon[{{0,0},{-0.2,0},{-.2,2},{0,2}}],Polygon[{{-0.2,0.1},{-0.2,-0.2},{7.1,-0.2},{7.1,0.1}}],Polygon[{{2k,0},{+0.2+2k,0},{.2+2k,2},{2k,2}}]},Polygon[{{2k-0.1,0.1},{2k+4,0.1},{2k+4,0.4},{2k-0.1,0.4}}],Red,Disk[{k,k+.5},k],Black,Table[Line[{{0.1i,0.},{0.1i,0.1}}],{i,0,70}],RGBColor[0.501961, 1, 1],Table[Line[{{3.9/20i+2k,0.1},{3.9/20i+2k,0.2}}],{i,0,20}],Table[Text[Style[Mod[i,10],10],{2k+3.9/10.i+0.005,0.3}],{i,0,10}],Black,Table[Text[Style[Mod[i,10],10],{i+0.005,-0.1}],{i,0,7}],{RGBColor[0.847059, 0.376471, 0.901961],Line[{{0.,0},{0.,-1.5}}],Line[{{prr,0},{prr,-1.5}}],Line[{{prava,0},{prava,-.55}}],Line[{{prava+(prava-prr)39,0},{prava+(prava-prr)39,-1.5}}]},Red,Arrow[{{prava,-0.5},{prava+(prava-prr)39,-0.5}}],Blue,Arrow[{{0,-0.5},{prava,-0.5}}],Brown,Arrow[{{prr,-1},{prava+(prava-prr)39,-1}}],Green,Arrow[{{0,-1},{prr,-1}}],Black,Text[Style[prr,18],{prr/2,-0.9}],Text[Style["x",18],{prr/2,-0.4}],Text[Style[StringJoin[ToString[(prava-prr)100],"×39/100"],18],{prava+(prava-prr)39/2.,-0.4}],Text[Style[StringJoin[ToString[(prava-prr)100],"×0.4"],18],{prava+(prava-prr)39/2.,-0.9}]},Axes->{False,False},PlotRange->{{-0.2,7.2},{-1.2,3}},ImageSize->500,Ticks->Automatic],Row[{Style["x=",14],Style[prr,14],Style["+",14],Style[(prava-prr)100,14],Style["(0.4-39/100)",14],Style["=",14],Style[prr,14],Style["+",14],Style[(prava-prr)100,14],Style["× 0.01",14],Style["=",14],Style[prr,14],Style["+",14],Style[prava-prr,14],Style["=",14],Style[prava,14]}]}],Row[{Text@Column[{"What is the width the disk?", Spacer[2],PopupMenu[Dynamic[an],choices],If[an==prava,True,False]}],Graphics[{{GrayLevel[0.7],Polygon[{{0,0},{-0.2,0},{-.2,2},{0,2}}],Polygon[{{-0.2,0.1},{-0.2,-0.2},{7.1,-0.2},{7.1,0.1}}],Polygon[{{2k,0},{+0.2+2k,0},{.2+2k,2},{2k,2}}]},Polygon[{{2k-0.1,0.1},{2k+4,0.1},{2k+4,0.4},{2k-0.1,0.4}}],Red,Disk[{k,k+.5},k],Black,Table[Line[{{0.1i,0.},{0.1i,0.1}}],{i,0,70}],RGBColor[0.501961, 1, 1],Table[Line[{{3.9/20i+2k,0.1},{3.9/20i+2k,0.2}}],{i,0,20}],Table[Text[Style[Mod[i,10],10],{2k+3.9/10.i+0.005,0.3}],{i,0,10}],Black,Table[Text[Style[Mod[i,10],10],{i+0.005,-0.1}],{i,0,7}]},Axes->{False,False},PlotRange->{{-.2,7.1},{-1.2,3}},ImageSize->500,Ticks->Automatic]}]]]]],{k1,Random[Integer,{367,376}],ControlType->None},{{ranint,RandomInteger[{1,400}]},ControlType->None},
{an,0,ControlType->None},Button["new question",an=0;k1=Random[Integer,{200,499}];ranint=RandomInteger[{1,1990}]],{{sh,False,"show explanation"},{True,False}},ContentSize->{540,450},SaveDefinitions->True]

The Demonstration illustrated Vernier caliper of precision 0.05 mm.

The vernier scale was invented in 1631 by the French mathematician Pierre Vernier (1580–1637). It was also called nonius scale upon Portuguese mathematician Petrus Nonius (Nunes) (1502-1578) who invented a related system for the astrolabe.

Vernier scale

Contributed by: Izidor Hafner