%%
%% This is file `ciphysic.mf',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% circ.dtx  (with options: `ciphysicmf')
%% Copyright 1997-98  Sebastian Tannert / Andreas Tille
%% 
%% This file is part of the CIRC package
%% -------------------------------------
%%   This package is distributed in the hope that it will be useful,
%%   but WITHOUT ANY WARRANTY; without even the implied warranty of
%%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%% 
%%   For error reports concerning UNCHANGED versions of this file no
%%   more than one year old, see CIRC.DVI.
%% 
%% IMPORTANT COPYRIGHT NOTICE:
%% 
%% You are NOT ALLOWED to distribute this file alone.
%% 
%% You are allowed to distribute this file under the condition that it
%% is distributed together with all the files listed in circ.txt.
%% 
%% If you receive only some of these files from someone, complain!
%% 
%% You are NOT ALLOWED to change this file.
font_identifier:="ciphysic";

string optionname; optionname:="physics";

input defcirc.mf;

%% SPRING

spring_lt#= 5CIu#;
lspring_lt#= 7CIu#;
spring_th#= 1CIu#;
define_whole_pixels(lspring_lt,spring_lt,spring_th);
spring_gap= .6CIu;
spring_n=11;
spring_swd=(spring_lt-2spring_gap)/spring_n;
lspring_swd=(lspring_lt-2spring_gap)/spring_n;

twopinchar("spring")("k")("spring")
  (spring_lt#, .5spring_th#, .5spring_th#)
( pickup pensquare scaled normalline;
  z0=(0,0);
  shiftpoint:=z0+(spring_lt,0);
  z1=z0+(spring_gap,0);
  draw z0--z1;
  pickup pencircle scaled normalline;
  for i:=1 upto spring_n:
    x[i+1]=x[i]+spring_swd; y[i+1]=y[0]+if odd(i): 1 else: -1 fi*.5spring_th;
    if i=spring_n: y[i+1]:=y[i+1]-if odd(i): 1 else: -1 fi*.5spring_th fi;
    draw z[i]--z[i+1];
  endfor;
  z[spring_n+2]=z0+(spring_lt,0);
  pickup pensquare scaled normalline;
  z[spring_n+2]=z0+(spring_lt,0);
  draw z[spring_n+1]--z[spring_n+2];
)

twopinchar("lspring")("k")("long spring")
  (lspring_lt#, .5spring_th#, .5spring_th#)
( pickup pensquare scaled normalline;
  z0=(0,0);
  shiftpoint:=z0+(lspring_lt,0);
  z1=z0+(spring_gap,0);
  draw z0--z1;
  pickup pencircle scaled normalline;
  for i:=1 upto spring_n:
    x[i+1]=x[i]+lspring_swd; y[i+1]=y[0]+if odd(i): 1 else: -1 fi*.5spring_th;
    if i=spring_n: y[i+1]:=y[i+1]-if odd(i): 1 else: -1 fi*.5spring_th fi;
    draw z[i]--z[i+1];
  endfor;
  z[spring_n+2]=z0+(lspring_lt,0);
  pickup pensquare scaled normalline;
  draw z[spring_n+1]--z[spring_n+2];
)

%% MASS single/double

dmass_lt#= 2CIu#;
mass_r#=  1.5CIu#;
define_whole_pixels(dmass_lt,mass_r);

twopinchar("fdmass")("m")("mass with two forces; full drawn")
  (dmass_lt#, .5mass_r#, .5mass_r#)
(  pickup pensquare scaled normalline;
   z0=(0,0);
   z1=z0+(dmass_lt,0);
   shiftpoint:=z1;
   draw z0--z1;
   z2=.5[z0,z1];
   pickup pencircle scaled mass_r;
   drawdot z2;
)

twopinchar("dmass")("m")("mass with two forces; outlined")
  (dmass_lt#, .5mass_r#, .5mass_r#)
(  pickup pensquare scaled normalline;
   z0=(0,0);
   z1=z0+(.5(dmass_lt-mass_r),0);
   draw z0--z1;
   z3=z0+(dmass_lt,0);
   shiftpoint:=z3;
   z4=z3-(.5(dmass_lt-mass_r),0);
   draw z3--z4;
   z2=.5[z0,z3];
   pickup pencircle scaled normalline;
   draw fullcircle scaled mass_r shifted z2;
)

twopincharfour("fmass")("m")(".")("*")("mass; full drawn")
  (dmass_lt#, .5mass_r#, .5mass_r#)
(  pickup pensquare scaled normalline;
   z0=(0,0);
   z1=z0+(dmass_lt,0);
   z2=.5[z0,z1];
   draw z0--z2;
   pickup pencircle scaled mass_r;
   drawdot z2;

   shiftpoint:=z1;
)

twopincharfour("mass")("m")(".")("*")("mass; outlined")
  (dmass_lt#, .5mass_r#, .5mass_r#)
(  pickup pensquare scaled normalline;
   z0=(0,0);
   z1=z0+(.5(dmass_lt-mass_r),0);
   draw z0--z1;
   z3=z0+(dmass_lt,0);
   z2=.5[z0,z3];
   pickup pencircle scaled normalline;
   draw fullcircle scaled mass_r shifted z2;

   shiftpoint:=z3;
)

%% WALL

wall_lt#= 1.5CIu#;
wall_ht#= 2.5CIu#;
define_whole_pixels(wall_ht, wall_lt);
wall_f=1/3;
wall_n=6;
wall_alpha=40;

twopincharfour("wall")("{}")(".")("|")("wall")
  (wall_lt#,.5wall_ht#
               +wall_lt#*(1-wall_f)*sind(wall_alpha),.5wall_ht#)
(  pickup pensquare scaled normalline;
   z0=(0,0);
   z1=z0+(wall_f*wall_lt,0);
   draw z0--z1;
   z1=.5[z2,z3]; y3-y2=wall_ht; x3=x2;
   pickup pensquare scaled verythickline;
   draw z2--z3;
   path a;
   a=(0,0)--(1-wall_f)*wall_lt*dir(wall_alpha);
   pickup pencircle scaled normalline;
   for i:=0 upto wall_n: draw a shifted (i/wall_n)[z2,z3]; endfor

   shiftpoint:=z0+(wall_lt,0);
)

tile_lt#= 2CIu#;
tile_ht#= .4CIu#;
tile_f=0.1;

define_whole_pixels(tile_lt,tile_ht);

twopincharfour("tile")("{}")(".")("*")("tile")
  (wall_lt#,.5tile_ht#,.5tile_ht#)
(  pickup pensquare scaled normalline;
   z0=(0,0);
   z1=z0+(tile_lt,0);
   z2=tile_f[z0,z1];
   draw z0--z1;
   pickup pensquare scaled verythickline;
   draw z1--z2;
   shiftpoint:=z1;
)

spin_lt#= 2CIu#;
spin_r#=  .7CIu#;
spin_ht#= 2CIu#;
spin_alt= .5CIu;
spin_awd= .1CIu;
define_whole_pixels(spin_lt,spin_r, spin_ht);

twopinchar("spinu")("S")("spin up")
  (spin_lt#, .6spin_ht#, .6spin_ht#)
(  pickup pensquare scaled normalline;
   z0=(0,0);
   z1=z0+(spin_lt,0);
   draw z0--z1;
   z2=.5[z0,z1];
   y3-y4=spin_ht;
   x3=x4=x2;
   y2=.6[y3,y4];
   y5=y6=y3-spin_alt;
   x5=x2-spin_awd;
   x6=x2+spin_awd;
   draw z3--z4;
   filldraw z5--z3--z6--cycle;
   pickup pencircle scaled spin_r;
   drawdot z2;
   shiftpoint:=z1;
)

twopinchar("spind")("S")("spin down")
  (spin_lt#, .6spin_ht#, .6spin_ht#)
(  pickup pensquare scaled normalline;
   z0=(0,0);
   z1=z0+(spin_lt,0);
   draw z0--z1;
   z2=.5[z0,z1];
   y3-y4=-spin_ht;
   x3=x4=x2;
   y2=.6[y3,y4];
   y5=y6=y3+spin_alt;
   x5=x2-spin_awd;
   x6=x2+spin_awd;
   draw z3--z4;
   filldraw z5--z3--z6--cycle;
   pickup pencircle scaled spin_r;
   drawdot z2;
   shiftpoint:=z1;
)

endCIRCfont
%% 
%%
%% End of file `ciphysic.mf'.
