Nomogram of x/a+y/b

Manipulate[With[{x=IntegerPart[pp[[1,1]]],y=IntegerPart[pp[[2,1]]]},With[{z1=(x+y)/2},Column[{Text@Row[{Row[Join[{Style["Find z, if: z=x/",20],Style[a,20],Style["+y/",20],Style[b,20],Style[", x=",20],Style[a x,20], Style[", y=",20],Style[b y,20],Style["!     ",20]},If[sh,{Style["z=",20],Style[2z1,20]},{}]]]}],"","","","",Graphics[{Line[{{0,0},{100,0}}],Line[{{0,20},{100,20}}],Line[{{0,40},{100,40}}],{Red,PointSize[0.01],Point[{{x,0},{y,40}}]},Table[Line[{{i,-1},{i,0}}],{i,0,100}],Table[Line[{{i,-2},{i,0}}],{i,0,100,10}],Table[Text[Style[a i,10],{i,-3}],{i,10,100,10}],Table[Text[Style[b i,10],{i,43}],{i,10,100,10}],Table[Line[{{i,40},{i,41}}],{i,0,100}],Table[Line[{{i,40},{i,42}}],{i,0,100,10}],{RGBColor[0, 0.423529, 0],Line[{{x,0},{y,40}}]},Text[Style["x",Italic,20],{x,0},-{1,1}],Text[Style["y",Italic,20],{y,40},{-1,1}],Text[Style["z",Italic,20],{z1,20},{1,1}],
{Line[{{0,20},{100,20}}],Table[Text[Style[2 i,10],{i,22}],{i,10,100,10}],Table[Line[{{i,19},{i,21}}],{i,0,100,1}],Table[Line[{{i,19},{i,21}}],{i,0,100,10}]}},ImageSize->500]}]]],Control[{{a,1},Range[4]}],Spacer[20],Control[{{b,2},Range[4]}],{{sh,False,"show result"},{False,True}},{{pp,{{20,0},{40,40}}},{0,0},{100,41},Locator,Appearance->None,LocatorAutoCreate->{1,Infinity}},ContentSize->{540,400}]

The Demonstration illustrates a nomogram of z=x/a+y/b. Move x and y and read z.

Contributed by: Izidor Hafner