home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / CNC11TP.ZIP / BNCHCIRC.PAS next >
Encoding:
Pascal/Delphi Source File  |  1989-01-19  |  2.0 KB  |  73 lines

  1. { Copyright (C) 1989 Adam Fritz, 133 Main St., Afton, N.Y. 13730 }
  2.  
  3. program BenchCircle (output) ;
  4.  
  5.      { BnchCirc - compare average times required by stroke }
  6.      {            circle and BGI circle routines           }
  7.  
  8. uses GRAPH, DOS ;
  9.  
  10. {~~~~~~~~~~~~~~~~~~~~~ circle routines ~~~~~~~~~~~~~~~~~~~~}
  11.  
  12. {$I conic.pas }
  13.  
  14. {-$I circda2.pas  }
  15. {-$I circdaf.pas }
  16. {-$I circdai.pas }
  17. {-$I circdai2.pas }
  18. {-$I circdam2.pas }
  19. {-$I circdas.pas }
  20. {-$I circmb.pas }
  21. {$I circra.pas }
  22. {-$I circraf4.pas }
  23. {-$I circrai2.pas }
  24. {-$I circrair.pas }
  25. {-$I circram.pas }
  26. {-$I circras.pas }
  27.  
  28. {~~~~~~~~~~~~~~~~~~~~~ main program ~~~~~~~~~~~~~~~~~~~~~~~}
  29.  
  30. const
  31.    nCircle = 100 ;
  32.  
  33. var
  34.    i : integer ;
  35.    xc,yc : integer ;
  36.    Hour,Min,Sec,CentiSec : array[0..2] of word ;
  37.    Time : array[0..2] of single ;
  38.    dTimeCircle,dTimeStroke : single ;
  39.    grDetect,grMode : integer ;
  40.  
  41. begin
  42.    grDetect := Detect ;
  43.    InitGraph(grDetect,grMode,'') ;
  44.    xc := (GetMaxX + 1) shr 1 ;
  45.    yc := (GetMaxY + 1) shr 1 ;
  46.    Randomize ;
  47.    GetTime(Hour[0],Min[0],Sec[0],CentiSec[0]) ;
  48.                                 { TURBO Bresenham }
  49.    ClearDevice ;
  50.    for i := 1 to nCircle do
  51.       Circle(Random(GetMaxX),Random(GetMaxY),Random(xc)) ;
  52.    GetTime(Hour[1],Min[1],Sec[1],CentiSec[1]) ;
  53.                                 { stroke circle }
  54.    ClearDevice ;
  55.    for i := 1 to nCircle do
  56.       StrokeCircle(Random(GetMaxX),Random(GetMaxY),Random(xc)) ;
  57.    GetTime(Hour[2],Min[2],Sec[2],CentiSec[2]) ;
  58.    CloseGraph ;
  59.                                 { convert times to seconds }
  60.    for i := 0 to 3 do
  61.       Time[i] := (Hour[i] * 60.0 + Min[i]) * 60.0 +
  62.                      Sec[i] + CentiSec[i]/100.0 ;
  63.                                 { compute average drawing times }
  64.     dTimeCircle := (Time[1] - Time[0])/nCircle ;
  65.     dTimeStroke := (Time[2] - Time[1])/nCircle ;
  66.  
  67.    writeln (output,'Circle: ',dTimeCircle:8:5,'   ',
  68.                    'Stroke: ',dTimeStroke:8:5)
  69.  
  70. end.
  71.  
  72. { Copyright (C) 1989 Adam Fritz, 133 Main St., Afton, N.Y. 13730 }
  73.