Hacker News new | past | comments | ask | show | jobs | submit login
Kids in US can't read analog clock (youtube.com)
4 points by asendia on May 4, 2018 | hide | past | favorite | 2 comments



I once had a clock that runs backwards, i.e.: counter clockwise. There are so few clocks in the wild, that after a while I realized it was the only analog clock I saw regularly. Not only that, but I became used to the backwards rotation, so that when I did see an analog clock, I had to re-adjust so I could read the time!


print on nearest PS printer:

  %!PS-Adobe-3.0
  %%Creator: Toby Thurston
  %%Title: (Pages of pedagogical clocks)
  %%CreationDate: (2014-02-14)
  %%BoundingBox: 12 12 600 780 
  %%Pages: 1
  %%EndComments
  << /PageSize [612 792] >> setpagedevice
  %%BeginSetup
  /clock {
      /mins exch def
      /hour exch def
      /r exch def % radius
      /cr r 100 div def
      % draw the minute marks
      12 { .5 setlinewidth 4 { 6 rotate r 0 moveto r 20 div 0 rlineto stroke } repeat
	   2 setlinewidth     6 rotate r 0 moveto r 20 div 0 rlineto stroke } repeat  
      % numbers           
      /fontsize r 0.14 mul def
      /Helvetica findfont fontsize scalefont setfont
      /s 2 string def 
      /rr r 0.9 mul def
      1 1 12 { /n exch def /theta 90 30 n mul sub def
	       /st n s cvs def st stringwidth pop /dx exch 2 div neg def
	       rr theta cos mul rr theta sin mul moveto dx fontsize 3 div neg rmoveto st show
	     } for

      % draw hands (unless hour is negative)
      -1 hour lt {
	  gsave % hour hand first
	  90 60 hour mul mins add 2 div sub rotate
	  newpath
	  0 2 moveto
	  15 cr mul  3 cr mul 33 cr mul   0 cr mul 50 cr mul  3 cr mul curveto 
	  55 cr mul 15 cr mul 60 cr mul   0 cr mul 76 cr mul  0 cr mul curveto
	  60 cr mul  0 cr mul 55 cr mul -15 cr mul 50 cr mul -3 cr mul curveto 
	  33 cr mul  0 cr mul 15 cr mul  -3 cr mul  0 cr mul -2 cr mul curveto
	  closepath 0 0 .677 setrgbcolor fill
	  grestore
	  gsave % minute hand on top
	  90 6 mins mul sub rotate
	  newpath
	  0 2 moveto
	  15 cr mul 3 cr mul 33 cr mul 0         50 cr mul  1 cr mul curveto 
	  65 cr mul 3 cr mul 83 cr mul 0         97 cr mul  0        curveto
	  83 cr mul 0        65 cr mul -3 cr mul 50 cr mul -1 cr mul curveto 
	  33 cr mul 0        15 cr mul -3 cr mul 0         -2 cr mul curveto
	  closepath .635 0 0 setrgbcolor fill
	  grestore
      } if 

      % finally do central dot (to cover starts of hands) and outer band      
      .5 setlinewidth
      0 0 moveto 0 0 r 20 div   0 360 arc fill
      0 0 r 1.07 mul 0 360 arc stroke

  } def

  /emptyclock {
      /r exch def % radius
      /cr r 100 div def
      % draw the minute marks
      12 { .5 setlinewidth 4 { 6 rotate r 0 moveto r 20 div 0 rlineto stroke } repeat
	   2 setlinewidth     6 rotate r 0 moveto r 20 div 0 rlineto stroke } repeat  
      % numbers           
      /fontsize r 0.14 mul def
      /Helvetica findfont fontsize scalefont setfont
      /s 2 string def 
      /rr r 0.9 mul def
      1 1 12 { /n exch def /theta 90 30 n mul sub def
	       /st n s cvs def st stringwidth pop /dx exch 2 div neg def
	       rr theta cos mul rr theta sin mul moveto dx fontsize 3 div neg rmoveto st show
	     } for

      % finally do central dot (to cover starts of hands) and outer band      
      .5 setlinewidth
      0 0 moveto 0 0 r 20 div   0 360 arc fill
      0 0 r 1.07 mul 0 360 arc stroke

  } def


  %%EndSetup
  %%Page: 1 1 
  %%BeginPageSetup
  /pgsave save def
  %%EndPageSetup
  297 480 translate
  120 

  (%Calendar%) /IODevice resourcestatus {
      pop pop (%Calendar%) currentdevparams
      dup /Running get { dup /Hour get exch /Minute get }{ 0 0 } ifelse } { -1 -1 } ifelse

  clock
  pgsave restore
  showpage
  %%Page: 2 2
  %%BeginPageSetup
  /pgsave save def
  %%EndPageSetup
  50 -55 translate
  4 {
      5 { 0 165 translate % a page of clocks for learners
	  50 rand 12 mod rand 60 mod clock 
	  % line underneath           
	  gsave [1 3] 0 setdash 50 neg dup 1.8 mul moveto 50 2 mul 0 rlineto stroke grestore
	} repeat
      146 5 165 mul neg translate
  } repeat
  pgsave restore
  showpage
  %%Page: 3 3
  %%BeginPageSetup
  /pgsave save def
  %%EndPageSetup
  75 -55 translate
  4 {
      5 { 0 165 translate    % whole multiple of five minutes only
	  45 rand 12 mod rand 12 mod 5 mul clock 
	  gsave [1 3] 0 setdash 50 neg dup 1.8 mul moveto 50 2 mul 0 rlineto stroke grestore
	} repeat
      146 5 165 mul neg translate
  } repeat
  pgsave restore
  showpage
  %%Page: 4 4
  %%BeginPageSetup
  /pgsave save def
  %%EndPageSetup
  75 -55 translate
  4 {
      5 { 0 165 translate    % quarter hours only
	  45 rand 12 mod rand 4 mod 15 mul clock 
	  gsave [1 3] 0 setdash 50 neg dup 1.8 mul moveto 50 2 mul 0 rlineto stroke grestore
	} repeat
      146 5 165 mul neg translate
  } repeat
  pgsave restore
  showpage

  %%Page: 5 5
  %%BeginPageSetup
  /pgsave save def
  %%EndPageSetup
  75 -55 translate
  4 {
      5 { 0 165 translate    % empty clocks
	  45 emptyclock 
	  gsave [1 3] 0 setdash 50 neg dup 1.8 mul moveto 50 2 mul 0 rlineto stroke grestore
	} repeat
      146 5 165 mul neg translate
  } repeat
  pgsave restore
  showpage



  %%Eof




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: