Home » Archimedes archive » Archimedes World » AW-1995-01-Disc1.adf » Disk1Jan95 » !AWJan95/Goodies/DrawBasic/!DrawBasic/Resources/Calculus/Graphs

!AWJan95/Goodies/DrawBasic/!DrawBasic/Resources/Calculus/Graphs

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Archimedes World » AW-1995-01-Disc1.adf » Disk1Jan95
Filename: !AWJan95/Goodies/DrawBasic/!DrawBasic/Resources/Calculus/Graphs
Read OK:
File size: 3683 bytes
Load address: 0000
Exec address: 0000
File contents
    1REM > DrawBasic:Resources.Calculus.Graphs
    2
    3REM =======================================================
    4REM
    5REM copyright Joe Taylor June 1994
    6REM
    7REM N.B. For ERROR THROWBACK to work The first line above
    8REM      MUST have the correct pathname of this file.
    9REM      If you move the location of the file remember to
   10REM      alter this pathname.
   11REM
   12REM =======================================================
   13
   14REM **********************
   15REM
   16REM CALCULUS
   17REM
   18REM **********************
   19
   20REM ================
   21REM Data points
   22REM ================
   23
   24DEF PROCMatRead(data())
   25LOCAL _i%,_j%
   26CASE DIM(data()) OF
   27WHEN 1
   28 FOR _i%=1 TO DIM(data(),1) : READ data(_i%) : NEXT
   29WHEN 2
   30  FOR _i%=1 TO DIM(data(),1)
   31  FOR _j%=1 TO DIM(data(),2)
   32   READ data(_i%,_j%)
   33   NEXT
   34   NEXT
   35ENDCASE
   36ENDPROC
   37
   38DEF PROCMaxMin(data(),RETURN min, RETURN max)
   39LOCAL _i%,_j%
   40min=2^30 : max=-(2^30)
   41CASE DIM(data()) OF
   42WHEN 1
   43 FOR _i%=1 TO DIM(data(),1)
   44  IF min>data(_i%) THEN min=data(_i%)
   45  IF max<data(_i%) THEN max=data(_i%)
   46  NEXT
   47WHEN 2
   48  FOR _i%=1 TO DIM(data(),1)
   49  FOR _j%=1 TO DIM(data(),2)
   50   IF min>data(_i%,_j%) THEN min=data(_i%,_j%)
   51   IF max<data(_i%,_j%) THEN max=data(_i%,_j%)
   52   NEXT
   53   NEXT
   54ENDCASE
   55ENDPROC
   56
   57REM ==========================
   58REM Pie chart of data points
   59REM ==========================
   60
   61DEF PROCPie(data())
   62CASE DIM(data()) OF
   63 WHEN 1 : PROCPie_1(data())
   64 WHEN 2 : PROCPie_2(data())
   65ENDCASE
   66ENDPROC
   67
   68DEF PROCPie_1(data())
   69LOCAL _i%,_n%,_angle,_theta,_sum,_radius,_sector,_x,_y,_xc,_yc
   70_n%=DIM(data(),1)
   71FOR _i%=1 TO _n% : _sum+=data(_i%) :NEXT
   72IF _sum>0 THEN
   73 _angle=2*PI/_sum : _theta=0 : _col%=7
   74 ELSE
   75 ERROR 0, "Negative or Zero total in pie chart"
   76 ENDIF
   77 PROCFrameCoords(0,FNFRAME_Width,0,FNFRAME_Height)
   78 _xc=FNFRAME_Width/2 : _yc=FNFRAME_Height/2
   79 IF _xc<_yc THEN _radius=_xc ELSE  _radius=_yc
   80 _radius=_radius*FNScreenSize
   81FOR _i%=1 TO _n%
   82 _sector=FNSector(_xc,_yc,_radius,_angle*data(_i%),_theta)
   83 _col%+=1 : _col%=_col% MOD 16
   84 PROCFill@(_sector,_col%)
   85 PROCDrawPath(_sector)
   86 _x=_xc+_radius*1.1*COS(_angle*data(_i%)/2+_theta)
   87 _y=_yc+_radius*1.1*SIN(_angle*data(_i%)/2+_theta)
   88 PROCPrint(STR$(data(_i%)),_x,_y)
   89 _theta+=_angle*data(_i%)
   90 NEXT 
   91ENDPROC
   92
   93DEF PROCPie_2(data())
   94LOCAL _i%,_j%,_m%,_n%,_angle,_theta,_sum,_radius,_sector,_x,_y,_xc,_yc,_p%
   95_p%=INT(21*256*180/2.54+.5)-FNFrame_x : _p%=_p% DIV FNFrame_Width
   96_n%=DIM(data(),2)
   97PROCFrameCoords(0,FNFRAME_Width,0,FNFRAME_Height)
   98_xc=FNFRAME_Width/2 : _yc=FNFRAME_Height/2
   99 IF _xc<_yc THEN _radius=_xc ELSE  _radius=_yc
  100 _radius=_radius*FNScreenSize
  101FOR _j%=1 TO DIM(data(),1)
  102_sum=0
  103FOR _i%=1 TO _n% : _sum+=data(_j%,_i%) :NEXT
  104IF _sum>0 THEN
  105 _angle=2*PI/_sum : _theta=0 : _col%=7
  106 ELSE
  107 ERROR 0, "Negative or Zero total in pie chart"
  108 ENDIF 
  109FOR _i%=1 TO _n%
  110 _sector=FNSector(_xc,_yc,_radius,_angle*data(_j%,_i%),_theta)
  111 _col%+=1 : _col%=_col% MOD 16
  112 PROCFill@(_sector,_col%)
  113 PROCDrawPath(_sector)
  114 _x=_xc+_radius*1.1*COS(_angle*data(_j%,_i%)/2+_theta)
  115 _y=_yc+_radius*1.1*SIN(_angle*data(_j%,_i%)/2+_theta)
  116 PROCPrint(STR$(data(_j%,_i%)),_x,_y)
  117 _theta+=_angle*data(_j%,_i%)
  118 NEXT
  119PROCPrint("Table "+STR$_j%,_xc-_radius,0)
  120PROCFrameSize((_j% MOD _p%)*FNFRAME_Width,(_j% DIV _p%)*FNFRAME_Height,FNFRAME_Width,FNFRAME_Height) 
  121NEXT
  122ENDPROC
  123
  124REM ==========================
  125REM Bar charts of data points
  126REM ==========================
  127
  128DEF PROCBarChart(data())
  129 PROCHistogram(data(),.25)
  130 ENDPROC
  131
  132DEF PROCHistogram(data(),gap)
  133LOCAL _b%,_u,_v,_i%,_j%,_bar,_width,_col%
  134 _b%=DIM(data(),1) : _width=(1-gap)
  135 PROCMaxMin(data(),_u,_v) : IF _u>0 THEN _u=0
  136 PROCReduceFrameSize(FNScreenSize)
  137 PROCScreen(0,_b%,_u,_v)
  138 PROCAxesScale(_b%,0,FNBarScalesLarge,FNBarScalesSmall)
  139 CASE DIM(data()) OF
  140   WHEN 1 
  141   FOR _i%=1 TO _b%
  142    _bar=FNRectangle(_i%-1,0,_width,data(_i%))
  143    PROCFill@(_bar,FNRed)
  144    PROCDrawPath(_bar)
  145    NEXT 
  146   WHEN 2
  147    _col%=7 
  148    FOR _i%=1 TO _b%
  149    _col%+=1
  150    FOR _j%=1 TO DIM(data(),2)
  151     _bar=FNRectangle(_j%-1+(_i%-1)*_width/DIM(data(),1)/2,0,_width/2,data(_i%,_j%))
  152     PROCFill@(_bar,_col%)
  153     PROCDrawPath(_bar)
  154     NEXT
  155     NEXT
  156  ENDCASE
  157ENDPROC
  158
  159
  160REM ==========================
  161REM Point plot of data points
  162REM ==========================
  163
  164DEF FNPlot(data(),x%,y%)
  165LOCAL _path
  166PROCPathBegin(_path)
  167PROC@Plot(data(),ABSx%,ABSy%)
  168PROCPathEnd
  169=_path
  170
  171DEF PROCPlot(data(),x%,y%)
  172LOCAL _path,_y%
  173CASE y% OF
  174 WHEN TRUE
  175  FOR _y%=1 TO DIM(data(),2)
  176  IF x%<>_y% THEN
  177   PROCSymbol(FNSymbolType+(_y% MOD 10),FNPointSize)
  178   _path=FNPlot(data(),x%,_y%) 
  179   PROCFill@(_path,FNDesktopColour(7+ (_y% MOD 8)))
  180   PROCDrawPath(_path)
  181  ENDIF 
  182  NEXT 
  183 OTHERWISE
  184  _path=FNPlot(data(),x%,y%)
  185  PROCFill@(_path,FNFillColour)
  186  PROCDrawPath(_path) 
  187ENDCASE
  188ENDPROC
  189
  190DEF PROC@Plot(data(),x%,y%)
  191LOCAL _i%
  192FOR _i%=1 TO DIM(data(),1)
  193 PROC@Point(data(_i%,x%),data(_i%,y%))
  194 NEXT
  195ENDPROC
  196
  197REM ==========================
  198REM Line plot of data points
  199REM ==========================
  200
  201DEF FNLinePlot(data(),x%,y%)
  202LOCAL _path
  203PROCPathBegin(_path)
  204PROC@LinePlot(data(),ABSx%,ABSy%)
  205PROCPathEnd
  206=_path
  207
  208DEF PROCLinePlot(data(),x%,y%)
  209LOCAL _path,_y%
  210CASE y% OF
  211 WHEN TRUE 
  212  FOR _y%=1 TO DIM(data(),2)
  213   IF x%<>_y% THEN _path=FNLinePlot(data(),x%,_y%)
  214   NEXT 
  215 OTHERWISE
  216 _path=FNLinePlot(data(),x%,y%)  
  217ENDCASE
  218ENDPROC
  219
  220DEF PROC@LinePlot(data(),x%,y%)
  221LOCAL _i%,_x,_y
  222FOR _i%=1 TO DIM(data(),1)
  223 _x=data(_i%,x%) : _y=data(_i%,y%)
  224 IF _i%=1 THEN PROCMove(_x,_y) ELSE PROCDraw(_x,_y)
  225 NEXT
  226PROCClosePlot(data(),x%,y%)
  227ENDPROC
  228
  229DEF PROCClosePlot(data(),x%,y%)
  230LOCAL closed%,n%
  231n%=DIM(data(),1)
  232closed%=ABS(data(0,x%)-data(n%,x%))*FNX_Scale<1
  233closed%=closed% AND ABS(data(0,y%)=data(n%,y%))<FNEpsilon
  234IF closed%THEN PROCCloseWithLine
  235ENDPROC
  236
  237
  238REM ==========================
  239REM Graphs of data
  240REM ==========================
  241
  242DEF FNGraphPlot(data(),x%,y%)
  243LOCAL _path
  244 PROCPathBegin(_path)
  245 PROC@GraphPlot(data(),ABSx%,ABSy%)
  246 PROCPathEnd
  247=_path
  248
  249DEF PROCGraphPlot(data(),x%,y%)
  250LOCAL _path
  251CASE y% OF
  252 WHEN TRUE 
  253  FOR _y%=1 TO DIM(data(),2)
  254   IF x%<>_y% THEN _path=FNGraphPlot(data(),x%,_y%)
  255   NEXT 
  256 OTHERWISE
  257 _path=FNGraphPlot(data(),x%,y%)  
  258ENDCASE
  259ENDPROC
  260
  261DEF PROC@GraphPlot(data(),x%,y%)
  262LOCAL _i%,_x,_y,_X,_Y,_Mx,_My,_mx,_my
  263FOR _i%=1 TO DIM(data(),1)
  264 _x=data(_i%,x%) : _y=data(_i%,y%)
  265 IF _i%=1 THEN
  266  PROCMove(_x,_y)
  267  PROCSlope(data(),x%,y%,_i%,_mx,_my,2) :  _X=_x : _Y=_y
  268 ELSE
  269  _Mx=_mx : _My=_my
  270  PROCSlope(data(),x%,y%,_i%,_mx,_my,2)
  271  PROCBezier(_X+_Mx/3,_Y+_My/3,_x-_mx/3,_y-_my/3,_x,_y)
  272  _X=_x : _Y=_y
  273 ENDIF
  274 NEXT
  275 PROCClosePlot(data(),x%,y%)
  276ENDPROC
  277
  278DEF PROCSlope(data(),x%,y%,i%,RETURN mx,RETURN my,type%)
  279LOCAL n%,dx,dy,Dx,j%,k%,h,H,closed%  : n%=DIM(data(),1)
  280closed%=(ABS(data(0,x%)-data(n%,x%))*FNX_Scale)<1
  281closed%=closed% AND (ABS(data(0,y%)=data(n%,y%))*FNY_Scale)<1
  282CASE i% OF
  283 WHEN 1
  284  Dx=data(2,x%)-data(1,x%) : Dy=data(2,y%)-data(1,y%)
  285  IF closed% THEN
  286   dx=data(1,x%)-data(n%-1,x%) : dy=data(1,y%)-data(n%-1,y%)
  287  ELSE
  288  dx=Dx : dy=Dy
  289  ENDIF
  290 WHEN n%
  291  dx=data(n%,x%)-data(n%-1,x%) : dy=data(n%,y%)-data(n%-1,y%)
  292  IF closed% THEN
  293   Dx=data(1,x%)-data(n%,x%) : Dy=data(1,y%)-data(n%,y%)
  294  ELSE
  295   Dx=dx : Dy=dy
  296  ENDIF
  297 OTHERWISE
  298  Dx=data(i%+1,x%)-data(i%,x%) : Dy=data(i%+1,y%)-data(i%,y%)
  299  dx=data(i%,x%)-data(i%-1,x%) : dy=data(i%,y%)-data(i%-1,y%)
  300ENDCASE
  301CASE type% OF
  302WHEN 2
  303 IF dx*Dx>0 THEN mx=2*dx*Dx/(dx+Dx) ELSE mx=0
  304 IF dy*Dy>0 THEN my=2*dy*Dy/(dy+Dy) ELSE my=0
  305WHEN 3
  306 h=SQR(dx*dx+dy*dy) : H=SQR(Dx*Dx+Dy*Dy)
  307 mx=(H*dx/h+h*Dx/H)/(h+H) : my=(H*dy/h+h*Dy/H)/(h+H)
  308ENDCASE
  309ENDPROC
  310
  311REM ==========================
  312REM  Graphs of Functions
  313REM ==========================
  314
  315DEF PROCGraph(f$,n%)
  316LOCAL _path,_a,_b,_u,_v
  317PROCGetFrameCoords(_a,_b,_u,_v)
  318PROCPathBegin(_path)
  319PROC@Graph(f$,_a,_b,n%)
  320PROCPathEnd
  321ENDPROC
  322
  323DEF FNGraph(f$,a,b,n%)
  324LOCAL _path
  325PROCPathBegin(_path)
  326PROC@Graph(f$,a,b,n%)
  327PROCPathEnd
  328=_path
  329
  330DEF PROC@Graph(f$,a,b,n%)
  331LOCAL _eps,_h_min,_h_max,x,_h,_y,_X,_Y,_undefined%
  332_eps=FNEpsilon
  333_h_max=(b-a)/FNMinNoofPoints
  334_h_min=(b-a)/FNMaxNoofPoints
  335IF n%<=0 THEN _h=_h_max ELSE _h=(b-a)/n%
  336x=a-_h
  337LOCAL ERROR
  338ON ERROR LOCAL
  339_undefined%=TRUE
  340IF n%<=0 THEN _h=_h_max ELSE _h=(b-a)/n%
  341IF ERR=17 OR x>=b THEN ENDPROC
  342REPEAT
  343 x+=_h : IF x>b THEN x=b
  344 _y=EVALf$  
  345 CASE _undefined% OF
  346  WHEN TRUE
  347   _X=x : _Y=_y
  348   IF FNInFrame(x,_y) THEN
  349     PROCMove(x,_y) : _undefined%=FALSE
  350     ELSE
  351     _X=x : _Y=_y
  352     ENDIF
  353  OTHERWISE :
  354    IF n%<=0 AND x<b THEN PROCDraw_ControlLinearStep
  355    PROCDrawClip(_X,_Y,x,_y)
  356 ENDCASE
  357UNTIL x>=b
  358RESTORE ERROR
  359ENDPROC
  360
  361DEF PROCDrawClip(RETURN X,RETURN Y,x,y)
  362LOCAL _c1%,_c2%,_d%,_dx,_dy,_a,_b,_u,_v,_xs,_ys,_X,_Y
  363PROCGetFrameCoords(_a,_b,_u,_v)
  364_X=X : _Y=Y
  365_c1%=FNOutsideFrame(_X,_Y) : _d%=_c1%
  366_c2%=FNOutsideFrame(x,y)
  367IF ((_c1%=1)OR(_c1%=2)) AND((_c2%=1)OR(_c2%=2)) THEN X=x : Y=y:  ENDPROC
  368_xs=x : _ys=y
  369WHILE _c1%OR_c2%
  370 IF (_c1%AND_c2%) THEN ENDPROC
  371 _dx=x-_X : _dy=y-_Y
  372 IF _c1% THEN
  373  CASE TRUE OF
  374   WHEN _X<_a : _Y+=_dy*(_a-_X)/_dx : _X=_a
  375   WHEN _X>_b : _Y+=_dy*(_b-_X)/_dx : _X=_b
  376   WHEN _Y<_u : _X+=_dx*(_u-_Y)/_dy : _Y=_u
  377   WHEN _Y>_v : _X+=_dx*(_v-_Y)/_dy : _Y=_v
  378  ENDCASE
  379  _c1%=FNOutsideFrame(_X,_Y)
  380 ELSE
  381  CASE TRUE OF
  382   WHEN x<_a : y+=_dy*(_a-x)/_dx : x=_a
  383   WHEN x>_b : y+=_dy*(_b-x)/_dx : x=_b
  384   WHEN y<_u : x+=_dx*(_u-y)/_dy : y=_u
  385   WHEN y>_v : x+=_dx*(_v-y)/_dy : y=_v
  386  ENDCASE
  387  _c2%=FNOutsideFrame(x,y)
  388 ENDIF
  389ENDWHILE 
  390IF _d% THEN PROC@Line(_X,_Y,x,y) ELSE PROCDraw(x,y)
  391X=_xs : Y=_ys
  392ENDPROC
  393
  394REM =============
  395REM  Point Graphs
  396REM =============
  397
  398DEF PROCPoints(f$,n%)
  399LOCAL _path,_a,_b,_u,_v
  400PROCGetFrameCoords(_a,_b,_u,_v)
  401PROCPathBegin(_path)
  402PROC@Points(f$,_a,_b,n%)
  403PROCPathEnd
  404ENDPROC
  405
  406DEF FNPoints(f$,a,b,n%)
  407LOCAL _path
  408PROCPathBegin(_path)
  409PROC@Points(f$,a,b,n%)
  410PROCPathEnd
  411=_path
  412
  413DEF PROC@Points(f$,a,b,n%)
  414LOCAL _h,x,_y,_h_min,_h_max,_undefined%,_X,_Y,_eps
  415_eps=FNEpsilon
  416_h_max=(b-a)/FNMinNoofPoints
  417_h_min=(b-a)/FNMaxNoofPoints
  418IF n%<=0 THEN _h=_h_max ELSE _h=(b-a)/n%
  419x=a-_h
  420LOCAL ERROR
  421ON ERROR LOCAL
  422_undefined%=TRUE
  423IF n%<=0 THEN _h=_h_max ELSE _h=(b-a)/n%
  424IF ERR=17 OR x>=b THEN ENDPROC
  425REPEAT
  426 x+=_h : IF x>b THEN x=b
  427 _y=EVALf$ 
  428 IF FNInFrame(x,_y) THEN
  429  CASE _undefined% OF
  430   WHEN TRUE : _undefined%=FALSE 
  431   OTHERWISE :
  432    IF n%<=0 AND x<b THEN PROCDraw_ControlLinearStep
  433  ENDCASE
  434  PROC@Point(x,_y) : _X=x : _Y=_y
  435 ENDIF
  436UNTIL x>=b
  437RESTORE ERROR
  438ENDPROC
  439
  440DEF PROCDraw_ControlLinearStep
  441LOCAL _D2,_ym,_xx,_yy
  442_xx=x : _yy=_y
  443 x=(_xx+_X)/2 : _y=EVALf$ : _ym=(_Y+_yy)/2
  444_D2=ABS(_y-_ym)/4
  445IF _D2<_eps THEN
  446 IF _h<=_h_max/2 PROCDraw_DoubleStep ELSE _h=_h_max
  447ELSE
  448 IF _h>=2*_h_min PROCDraw_HalveStep ELSE _h=_h_min
  449ENDIF 
  450ENDPROC
  451
  452DEF PROCDraw_HalveStep
  453REPEAT
  454 _h=_h/2
  455 _xx=x : _yy=_y : _ym=(_Y+_yy)/2
  456  x=(_xx+_X)/2 : _y=EVALf$
  457 _D2=ABS(_y-_ym)/4
  458UNTIL _D2<_eps OR _h<=_h_min
  459IF _h<_h_min THEN _h=_h_min
  460ENDPROC
  461
  462DEF PROCDraw_DoubleStep
  463REPEAT
  464 x=_xx+_h : _y=EVALf$ : _ym=(_Y+_y)/2
  465_D2=ABS(_yy-_ym)/4
  466_h=2*_h : _xx=x : _yy=_y
  467UNTIL _D2>_eps OR _h>=_h_max OR x>=b
  468_h=_h/2 : x-=_h
  469IF x>b THEN x=b
  470_y=EVALf$
  471ENDPROC
  472
  473REM ========================
  474REM Piece-wise Cubic Graphs
  475REM =======================
  476
  477DEF PROCFunction(f$,n%)
  478LOCAL _path,_a,_b,_u,_v
  479PROCGetFrameCoords(_a,_b,_u,_v)
  480PROCPathBegin(_path)
  481PROC@Function(f$,_a,_b,n%)
  482PROCPathEnd
  483ENDPROC
  484
  485DEF FNFunction(f$,a,b,n%)
  486LOCAL _path
  487PROCPathBegin(_path)
  488PROC@Function(f$,a,b,n%)
  489PROCPathEnd
  490=_path
  491
  492DEF PROC@Function(f$,a,b,n%)
  493LOCAL _eps,_h_min,_h_max,x,_h,_y,_X,_Y,_undefined%
  494_eps=FNEpsilon
  495_h_max=(b-a)/FNMinNoofPoints
  496_h_min=(b-a)/FNMaxNoofPoints
  497IF n%<=0 THEN _h=_h_max ELSE _h=(b-a)/n%
  498x=a-_h
  499LOCAL ERROR
  500ON ERROR LOCAL
  501_undefined%=TRUE
  502IF n%<=0 THEN _h=_h_max ELSE _h=(b-a)/n%
  503IF ERR=17 OR x>=b THEN ENDPROC
  504REPEAT
  505 x+=_h : IF x>b THEN x=b
  506 _y=EVALf$
  507 IF _undefined% THEN
  508  _X=x : _Y=_y 
  509  IF FNInFrame(x,_y) THEN PROCMove(x,_y) : _undefined%=FALSE 
  510 ELSE
  511  PROCCubicClip(_X,_Y,x,_y,_h)
  512 ENDIF
  513UNTIL x>=b
  514RESTORE ERROR
  515ENDPROC
  516
  517DEF PROCCubicClip(RETURN X,RETURN Y,x,y,_h)
  518LOCAL _c1%,_c2%,_d%,_dx,_dy,_a,_b,_u,_v,_xs,_ys,_X,_Y,_My,_my
  519PROCGetFrameCoords(_a,_b,_u,_v)
  520_X=X : _Y=Y  
  521_c1%=FNOutsideFrame(_X,_Y) : _d%=_c1%
  522_c2%=FNOutsideFrame(x,y)
  523IF ((_c1%=1)OR(_c1%=2)) AND((_c2%=1)OR(_c2%=2)) THEN X=x : Y=y:  ENDPROC
  524_xs=x : _ys=y
  525WHILE _c1%OR_c2%
  526 IF (_c1%AND_c2%) THEN ENDPROC
  527 _dx=x-_X : _dy=y-_Y
  528 IF _c1% THEN
  529  CASE TRUE OF
  530   WHEN _X<_a : _Y+=_dy*(_a-_X)/_dx : _X=_a
  531   WHEN _X>_b : _Y+=_dy*(_b-_X)/_dx : _X=_b
  532   WHEN _Y<_u : _X+=_dx*(_u-_Y)/_dy : _Y=_u
  533   WHEN _Y>_v : _X+=_dx*(_v-_Y)/_dy : _Y=_v
  534  ENDCASE
  535  _c1%=FNOutsideFrame(_X,_Y)
  536 ELSE
  537  CASE TRUE OF
  538   WHEN x<_a : y+=_dy*(_a-x)/_dx : x=_a
  539   WHEN x>_b : y+=_dy*(_b-x)/_dx : x=_b
  540   WHEN y<_u : x+=_dx*(_u-y)/_dy : y=_u
  541   WHEN y>_v : x+=_dx*(_v-y)/_dy : y=_v
  542  ENDCASE
  543  _c2%=FNOutsideFrame(x,y)
  544 ENDIF
  545ENDWHILE
  546IF _d% THEN
  547  PROC@Line(_X,_Y,x,y)
  548  ELSE
  549   _My=FNSlope(f$,_X,_Y,_h,a,b,2) : _my=FNSlope(f$,x,y,_h,a,b,2)
  550   PROCBezier(_X+_h/3,_Y+_h*_My/3,x-_h/3,y-_h*_my/3,x,y)
  551  ENDIF
  552  X=_xs : Y=_ys
  553ENDPROC
  554
  555DEF FNSlope(f$,X,Y,h,a,b,type%)
  556LOCAL _dy,_Dy,x,_y,_my
  557IF X<>a THEN x=X-h : _y=EVALf$ : _dy=(Y-_y)
  558IF X<>b THEN x=X+h : _y=EVALf$ : _Dy=(_y-Y)
  559IF X=a THEN _dy=_Dy
  560IF X=b THEN _Dy=_dy
  561CASE type% OF
  562WHEN 2  : _my=(_dy+_Dy)/2/h
  563WHEN 3
  564 IF _dy*_Dy>0 THEN _my=2*_dy*_Dy/(_dy+_Dy) ELSE _my=0
  565ENDCASE
  566=_my
  567
  568REM ===========
  569REM Curves
  570REM ===========
  571
  572DEF PROCCurve(x$,y$,A,B,n%)
  573LOCAL _path,a,b,u,v
  574PROCPathBegin(_path)
  575PROC@Curve(x$,y$,A,B,n%)
  576PROCPathEnd
  577ENDPROC
  578
  579DEF FNCurve(x$,y$,A,B,n%)
  580LOCAL _path
  581PROCPathBegin(_path)
  582PROC@Curve(x$,y$,A,B,n%)
  583PROCPathEnd
  584=_path
  585
  586DEF PROC@Curve(x$,y$,a,b,n%)
  587LOCAL h,t,x,y,h_min,h_max,undefined%
  588h_min=(b-a)/FNMinNoofPoints
  589h_max=(b-a)/FNMaxNoofPoints
  590IF n%<=0 THEN h=h_max ELSE h=(b-a)/n%
  591t=a-h
  592LOCAL ERROR
  593ON ERROR LOCAL
  594undefined%=TRUE
  595IF n%<=0 THEN h=h_max ELSE h=(b-a)/n%
  596IF ERR=17 OR t>=b THEN ENDPROC
  597REPEAT
  598 t+=h
  599 IF t>b THEN t=b
  600 x=EVALx$ : y=EVALy$
  601 CASE undefined% OF
  602  WHEN TRUE : PROCMove(x,y) : undefined%=FALSE
  603  OTHERWISE : PROCDraw(x,y)
  604 ENDCASE
  605UNTIL t>=b
  606RESTORE ERROR
  607ENDPROC
  608
  609
  610REM REM ==========
  611REM REM Parameters
  612REM REM ==========
  613
  614DEF FNMaxNoofPoints=!(HIMEM+208)
  615DEF FNMinNoofPoints=!(HIMEM+212)
  616
  617DEF FNDotsPerInch=!(HIMEM+216)
  618 
  619DEF PROCResolution(max%,min%)
  620!(HIMEM+208)=max%
  621!(HIMEM+212)=min%
  622ENDPROC
  623
  624DEF PROCAccuracy(dots%)
  625!(HIMEM+216)=dots%
  626ENDPROC
  627
  628DEF FNBarScalesLarge=((!(HIMEM+220))<<16)>>16
  629
  630DEF FNBarScalesSmall=(!(HIMEM+220))>>16
  631
  632DEF PROCBarScales(Div%,Sub%)
  633!(HIMEM+220)=Div%+(Sub%<<16)
  634ENDPROC
  635
  636DEF FNScreenSize=|(HIMEM+240)
  637
  638DEF PROCScreenSize(factor)
  639|(HIMEM+240)=factor
  640ENDPROC
  641
  642
+� > DrawBasic:Resources.Calculus.Graphs

=� =======================================================
�
$� copyright Joe Taylor June 1994
�
;� N.B. For ERROR THROWBACK to work The first line above
7�      MUST have the correct pathname of this file.
	;�      If you move the location of the file remember to

�      alter this pathname.
�
=� =======================================================


� **********************
�
� CALCULUS
�
� **********************

� ================
� Data points
� ================

� �MatRead(data())

� _i%,_j%
Ȏ �(data()) �
� 1
, � _i%=1 � �(data(),1) : � data(_i%) : �
� 2
  � _i%=1 � �(data(),1)
  � _j%=1 � �(data(),2)
    � data(_i%,_j%)
!   �
"   �
#�
$�
%
&"� �MaxMin(data(),� min, � max)
'
� _i%,_j%
(min=2^30 : max=-(2^30)
)Ȏ �(data()) �
*� 1
+ � _i%=1 � �(data(),1)
,%  � min>data(_i%) � min=data(_i%)
-%  � max<data(_i%) � max=data(_i%)
.  �
/� 2
0  � _i%=1 � �(data(),1)
1  � _j%=1 � �(data(),2)
2.   � min>data(_i%,_j%) � min=data(_i%,_j%)
3.   � max<data(_i%,_j%) � max=data(_i%,_j%)
4   �
5   �
6�
7�
8
9 � ==========================
:� Pie chart of data points
; � ==========================
<
=� �Pie(data())
>Ȏ �(data()) �
? � 1 : �Pie_1(data())
@ � 2 : �Pie_2(data())
A�
B�
C
D� �Pie_1(data())
E>� _i%,_n%,_angle,_theta,_sum,_radius,_sector,_x,_y,_xc,_yc
F_n%=�(data(),1)
G&� _i%=1 � _n% : _sum+=data(_i%) :�
H� _sum>0 �
I) _angle=2*�/_sum : _theta=0 : _col%=7
J �
K/ � 0, "Negative or Zero total in pie chart"
L �
M1 �FrameCoords(0,�FRAME_Width,0,�FRAME_Height)
N- _xc=�FRAME_Width/2 : _yc=�FRAME_Height/2
O+ � _xc<_yc � _radius=_xc �  _radius=_yc
P  _radius=_radius*�ScreenSize
Q� _i%=1 � _n%
R= _sector=�Sector(_xc,_yc,_radius,_angle*data(_i%),_theta)
S  _col%+=1 : _col%=_col% � 16
T �Fill@(_sector,_col%)
U �DrawPath(_sector)
V4 _x=_xc+_radius*1.1*�(_angle*data(_i%)/2+_theta)
W4 _y=_yc+_radius*1.1*�(_angle*data(_i%)/2+_theta)
X �Print(�(data(_i%)),_x,_y)
Y _theta+=_angle*data(_i%)
Z � 
[�
\
]� �Pie_2(data())
^J� _i%,_j%,_m%,_n%,_angle,_theta,_sum,_radius,_sector,_x,_y,_xc,_yc,_p%
_?_p%=�(21*256*180/2.54+.5)-�Frame_x : _p%=_p% � �Frame_Width
`_n%=�(data(),2)
a0�FrameCoords(0,�FRAME_Width,0,�FRAME_Height)
b,_xc=�FRAME_Width/2 : _yc=�FRAME_Height/2
c+ � _xc<_yc � _radius=_xc �  _radius=_yc
d  _radius=_radius*�ScreenSize
e� _j%=1 � �(data(),1)
f
_sum=0
g*� _i%=1 � _n% : _sum+=data(_j%,_i%) :�
h� _sum>0 �
i) _angle=2*�/_sum : _theta=0 : _col%=7
j �
k/ � 0, "Negative or Zero total in pie chart"
l � 
m� _i%=1 � _n%
nA _sector=�Sector(_xc,_yc,_radius,_angle*data(_j%,_i%),_theta)
o  _col%+=1 : _col%=_col% � 16
p �Fill@(_sector,_col%)
q �DrawPath(_sector)
r8 _x=_xc+_radius*1.1*�(_angle*data(_j%,_i%)/2+_theta)
s8 _y=_yc+_radius*1.1*�(_angle*data(_j%,_i%)/2+_theta)
t# �Print(�(data(_j%,_i%)),_x,_y)
u! _theta+=_angle*data(_j%,_i%)
v �
w'�Print("Table "+�_j%,_xc-_radius,0)
x^�FrameSize((_j% � _p%)*�FRAME_Width,(_j% � _p%)*�FRAME_Height,�FRAME_Width,�FRAME_Height) 
y�
z�
{
| � ==========================
}� Bar charts of data points
~ � ==========================

�� �BarChart(data())
� �Histogram(data(),.25)
� �
�
�� �Histogram(data(),gap)
�)� _b%,_u,_v,_i%,_j%,_bar,_width,_col%
�% _b%=�(data(),1) : _width=(1-gap)
�* �MaxMin(data(),_u,_v) : � _u>0 � _u=0
�" �ReduceFrameSize(�ScreenSize)
� �Screen(0,_b%,_u,_v)
�6 �AxesScale(_b%,0,�BarScalesLarge,�BarScalesSmall)
� Ȏ �(data()) �
�   � 1 
�   � _i%=1 � _b%
�1    _bar=�Rectangle(_i%-1,0,_width,data(_i%))
�    �Fill@(_bar,�Red)
�    �DrawPath(_bar)
�
    � 
�
   � 2
�    _col%=7 
�    � _i%=1 � _b%
�    _col%+=1
�    � _j%=1 � �(data(),2)
�U     _bar=�Rectangle(_j%-1+(_i%-1)*_width/�(data(),1)/2,0,_width/2,data(_i%,_j%))
�     �Fill@(_bar,_col%)
�     �DrawPath(_bar)
�
     �
�
     �
�  �
��
�
�
� � ==========================
�� Point plot of data points
� � ==========================
�
�� �Plot(data(),x%,y%)
�� _path
��PathBegin(_path)
��@Plot(data(),�x%,�y%)
��PathEnd
�
=_path
�
�� �Plot(data(),x%,y%)
�� _path,_y%
�Ȏ y% �
� � �
�  � _y%=1 � �(data(),2)
�  � x%<>_y% �
�1   �Symbol(�SymbolType+(_y% � 10),�PointSize)
�"   _path=�Plot(data(),x%,_y%) 
�1   �Fill@(_path,�DesktopColour(7+ (_y% � 8)))
�   �DrawPath(_path)
�  � 
�  � 
� 
�  _path=�Plot(data(),x%,y%)
�  �Fill@(_path,�FillColour)
�  �DrawPath(_path) 
��
��
�
�� �@Plot(data(),x%,y%)
�	� _i%
�� _i%=1 � �(data(),1)
�' �@Point(data(_i%,x%),data(_i%,y%))
� �
��
�
� � ==========================
�� Line plot of data points
� � ==========================
�
�� �LinePlot(data(),x%,y%)
�� _path
��PathBegin(_path)
��@LinePlot(data(),�x%,�y%)
��PathEnd
�
=_path
�
�� �LinePlot(data(),x%,y%)
�� _path,_y%
�Ȏ y% �
�	 � � 
�  � _y%=1 � �(data(),2)
�1   � x%<>_y% � _path=�LinePlot(data(),x%,_y%)
�	   � 
� 
�$ _path=�LinePlot(data(),x%,y%)  
��
��
�
�� �@LinePlot(data(),x%,y%)
�� _i%,_x,_y
�� _i%=1 � �(data(),1)
�& _x=data(_i%,x%) : _y=data(_i%,y%)
�* � _i%=1 � �Move(_x,_y) � �Draw(_x,_y)
� �
��ClosePlot(data(),x%,y%)
��
�
�� �ClosePlot(data(),x%,y%)
�� closed%,n%
�n%=�(data(),1)
�0closed%=�(data(0,x%)-data(n%,x%))*�X_Scale<1
�8closed%=closed% � �(data(0,y%)=data(n%,y%))<�Epsilon
�� closed%� �CloseWithLine
��
�
�
� � ==========================
�� Graphs of data
� � ==========================
�
�� �GraphPlot(data(),x%,y%)
�� _path
� �PathBegin(_path)
�  �@GraphPlot(data(),�x%,�y%)
�
 �PathEnd
�
=_path
�
�� �GraphPlot(data(),x%,y%)
�� _path
�Ȏ y% �
�	 � � 
�  � _y%=1 � �(data(),2)
�2   � x%<>_y% � _path=�GraphPlot(data(),x%,_y%)
�	   � 
 
% _path=�GraphPlot(data(),x%,y%)  
�
�

� �@GraphPlot(data(),x%,y%)
%� _i%,_x,_y,_X,_Y,_Mx,_My,_mx,_my
� _i%=1 � �(data(),1)
& _x=data(_i%,x%) : _y=data(_i%,y%)
	 � _i%=1 �

  �Move(_x,_y)
9  �Slope(data(),x%,y%,_i%,_mx,_my,2) :  _X=_x : _Y=_y
 �

  _Mx=_mx : _My=_my
(  �Slope(data(),x%,y%,_i%,_mx,_my,2)
8  �Bezier(_X+_Mx/3,_Y+_My/3,_x-_mx/3,_y-_my/3,_x,_y)
  _X=_x : _Y=_y
 �
 �
 �ClosePlot(data(),x%,y%)
�

-� �Slope(data(),x%,y%,i%,� mx,� my,type%)
5� n%,dx,dy,Dx,j%,k%,h,H,closed%  : n%=�(data(),1)
2closed%=(�(data(0,x%)-data(n%,x%))*�X_Scale)<1
<closed%=closed% � (�(data(0,y%)=data(n%,y%))*�Y_Scale)<1
Ȏ i% �
 � 1
9  Dx=data(2,x%)-data(1,x%) : Dy=data(2,y%)-data(1,y%)
  � closed% �
@   dx=data(1,x%)-data(n%-1,x%) : dy=data(1,y%)-data(n%-1,y%)
  �
   dx=Dx : dy=Dy
!  �
"	 � n%
#A  dx=data(n%,x%)-data(n%-1,x%) : dy=data(n%,y%)-data(n%-1,y%)
$  � closed% �
%<   Dx=data(1,x%)-data(n%,x%) : Dy=data(1,y%)-data(n%,y%)
&  �
'   Dx=dx : Dy=dy
(  �
) 
*A  Dx=data(i%+1,x%)-data(i%,x%) : Dy=data(i%+1,y%)-data(i%,y%)
+A  dx=data(i%,x%)-data(i%-1,x%) : dy=data(i%,y%)-data(i%-1,y%)
,�
-Ȏ type% �
.� 2
/* � dx*Dx>0 � mx=2*dx*Dx/(dx+Dx) � mx=0
0* � dy*Dy>0 � my=2*dy*Dy/(dy+Dy) � my=0
1� 3
2( h=�(dx*dx+dy*dy) : H=�(Dx*Dx+Dy*Dy)
38 mx=(H*dx/h+h*Dx/H)/(h+H) : my=(H*dy/h+h*Dy/H)/(h+H)
4�
5�
6
7 � ==========================
8�  Graphs of Functions
9 � ==========================
:
;� �Graph(f$,n%)
<� _path,_a,_b,_u,_v
= �GetFrameCoords(_a,_b,_u,_v)
>�PathBegin(_path)
?�@Graph(f$,_a,_b,n%)
@�PathEnd
A�
B
C� �Graph(f$,a,b,n%)
D� _path
E�PathBegin(_path)
F�@Graph(f$,a,b,n%)
G�PathEnd
H
=_path
I
J� �@Graph(f$,a,b,n%)
K2� _eps,_h_min,_h_max,x,_h,_y,_X,_Y,_undefined%
L_eps=�Epsilon
M_h_max=(b-a)/�MinNoofPoints
N_h_min=(b-a)/�MaxNoofPoints
O%� n%<=0 � _h=_h_max � _h=(b-a)/n%
P
x=a-_h
Q� �
R	� � �
S_undefined%=�
T%� n%<=0 � _h=_h_max � _h=(b-a)/n%
U� �=17 � x>=b � �
V�
W x+=_h : � x>b � x=b
X
 _y=�f$  
Y Ȏ _undefined% �
Z	  � �
[   _X=x : _Y=_y
\   � �InFrame(x,_y) �
]$     �Move(x,_y) : _undefined%=�
^
     �
_     _X=x : _Y=_y
`
     �
a	   :
b/    � n%<=0 � x<b � �Draw_ControlLinearStep
c    �DrawClip(_X,_Y,x,_y)
d �
e
� x>=b
f� �
g�
h
i� �DrawClip(� X,� Y,x,y)
j5� _c1%,_c2%,_d%,_dx,_dy,_a,_b,_u,_v,_xs,_ys,_X,_Y
k �GetFrameCoords(_a,_b,_u,_v)
l_X=X : _Y=Y
m(_c1%=�OutsideFrame(_X,_Y) : _d%=_c1%
n_c2%=�OutsideFrame(x,y)
o>� ((_c1%=1)�(_c1%=2)) �((_c2%=1)�(_c2%=2)) � X=x : Y=y:  �
p_xs=x : _ys=y
qȕ _c1%�_c2%
r � (_c1%�_c2%) � �
s _dx=x-_X : _dy=y-_Y
t
 � _c1% �
u  Ȏ � �
v,   � _X<_a : _Y+=_dy*(_a-_X)/_dx : _X=_a
w,   � _X>_b : _Y+=_dy*(_b-_X)/_dx : _X=_b
x,   � _Y<_u : _X+=_dx*(_u-_Y)/_dy : _Y=_u
y,   � _Y>_v : _X+=_dx*(_v-_Y)/_dy : _Y=_v
z  �
{  _c1%=�OutsideFrame(_X,_Y)
| �
}  Ȏ � �
~(   � x<_a : y+=_dy*(_a-x)/_dx : x=_a
(   � x>_b : y+=_dy*(_b-x)/_dx : x=_b
�(   � y<_u : x+=_dx*(_u-y)/_dy : y=_u
�(   � y>_v : x+=_dx*(_v-y)/_dy : y=_v
�  �
�  _c2%=�OutsideFrame(x,y)
� �
�� 
�*� _d% � �@Line(_X,_Y,x,y) � �Draw(x,y)
�X=_xs : Y=_ys
��
�
�� =============
��  Point Graphs
�� =============
�
�� �Points(f$,n%)
�� _path,_a,_b,_u,_v
� �GetFrameCoords(_a,_b,_u,_v)
��PathBegin(_path)
��@Points(f$,_a,_b,n%)
��PathEnd
��
�
�� �Points(f$,a,b,n%)
�� _path
��PathBegin(_path)
��@Points(f$,a,b,n%)
��PathEnd
�
=_path
�
�� �@Points(f$,a,b,n%)
�2� _h,x,_y,_h_min,_h_max,_undefined%,_X,_Y,_eps
�_eps=�Epsilon
�_h_max=(b-a)/�MinNoofPoints
�_h_min=(b-a)/�MaxNoofPoints
�%� n%<=0 � _h=_h_max � _h=(b-a)/n%
�
x=a-_h
�� �
�	� � �
�_undefined%=�
�%� n%<=0 � _h=_h_max � _h=(b-a)/n%
�� �=17 � x>=b � �
��
� x+=_h : � x>b � x=b
� _y=�f$ 
� � �InFrame(x,_y) �
�  Ȏ _undefined% �
�   � � : _undefined%=� 
�
    :
�/    � n%<=0 � x<b � �Draw_ControlLinearStep
�  �
�"  �@Point(x,_y) : _X=x : _Y=_y
� �
�
� x>=b
�� �
��
�
�� �Draw_ControlLinearStep
�� _D2,_ym,_xx,_yy
�_xx=x : _yy=_y
�+ x=(_xx+_X)/2 : _y=�f$ : _ym=(_Y+_yy)/2
�_D2=�(_y-_ym)/4
�� _D2<_eps �
�0 � _h<=_h_max/2 �Draw_DoubleStep � _h=_h_max
��
�/ � _h>=2*_h_min �Draw_HalveStep � _h=_h_min
�� 
��
�
�� �Draw_HalveStep
��
� _h=_h/2
�$ _xx=x : _yy=_y : _ym=(_Y+_yy)/2
�  x=(_xx+_X)/2 : _y=�f$
� _D2=�(_y-_ym)/4
�� _D2<_eps � _h<=_h_min
�� _h<_h_min � _h=_h_min
��
�
�� �Draw_DoubleStep
��
�& x=_xx+_h : _y=�f$ : _ym=(_Y+_y)/2
�_D2=�(_yy-_ym)/4
�_h=2*_h : _xx=x : _yy=_y
�"� _D2>_eps � _h>=_h_max � x>=b
�_h=_h/2 : x-=_h
�� x>b � x=b
�
_y=�f$
��
�
�� ========================
�� Piece-wise Cubic Graphs
�� =======================
�
�� �Function(f$,n%)
�� _path,_a,_b,_u,_v
� �GetFrameCoords(_a,_b,_u,_v)
��PathBegin(_path)
��@Function(f$,_a,_b,n%)
��PathEnd
��
�
�� �Function(f$,a,b,n%)
�� _path
��PathBegin(_path)
��@Function(f$,a,b,n%)
��PathEnd
�
=_path
�
�� �@Function(f$,a,b,n%)
�2� _eps,_h_min,_h_max,x,_h,_y,_X,_Y,_undefined%
�_eps=�Epsilon
�_h_max=(b-a)/�MinNoofPoints
�_h_min=(b-a)/�MaxNoofPoints
�%� n%<=0 � _h=_h_max � _h=(b-a)/n%
�
x=a-_h
�� �
�	� � �
�_undefined%=�
�%� n%<=0 � _h=_h_max � _h=(b-a)/n%
�� �=17 � x>=b � �
��
� x+=_h : � x>b � x=b
� _y=�f$
� � _undefined% �
�  _X=x : _Y=_y 
�5  � �InFrame(x,_y) � �Move(x,_y) : _undefined%=� 
� �
�  �CubicClip(_X,_Y,x,_y,_h)
 �

� x>=b
� �
�

 � �CubicClip(� X,� Y,x,y,_h)
=� _c1%,_c2%,_d%,_dx,_dy,_a,_b,_u,_v,_xs,_ys,_X,_Y,_My,_my
 �GetFrameCoords(_a,_b,_u,_v)
_X=X : _Y=Y  
	(_c1%=�OutsideFrame(_X,_Y) : _d%=_c1%

_c2%=�OutsideFrame(x,y)
>� ((_c1%=1)�(_c1%=2)) �((_c2%=1)�(_c2%=2)) � X=x : Y=y:  �
_xs=x : _ys=y

ȕ _c1%�_c2%
 � (_c1%�_c2%) � �
 _dx=x-_X : _dy=y-_Y

 � _c1% �
  Ȏ � �
,   � _X<_a : _Y+=_dy*(_a-_X)/_dx : _X=_a
,   � _X>_b : _Y+=_dy*(_b-_X)/_dx : _X=_b
,   � _Y<_u : _X+=_dx*(_u-_Y)/_dy : _Y=_u
,   � _Y>_v : _X+=_dx*(_v-_Y)/_dy : _Y=_v
  �
  _c1%=�OutsideFrame(_X,_Y)
 �
  Ȏ � �
(   � x<_a : y+=_dy*(_a-x)/_dx : x=_a
(   � x>_b : y+=_dy*(_b-x)/_dx : x=_b
(   � y<_u : x+=_dx*(_u-y)/_dy : y=_u
(   � y>_v : x+=_dx*(_v-y)/_dy : y=_v
  �
  _c2%=�OutsideFrame(x,y)
  �
!�
"� _d% �
#  �@Line(_X,_Y,x,y)
$  �
%B   _My=�Slope(f$,_X,_Y,_h,a,b,2) : _my=�Slope(f$,x,y,_h,a,b,2)
&9   �Bezier(_X+_h/3,_Y+_h*_My/3,x-_h/3,y-_h*_my/3,x,y)
'  �
(  X=_xs : Y=_ys
)�
*
+ � �Slope(f$,X,Y,h,a,b,type%)
,� _dy,_Dy,x,_y,_my
-(� X<>a � x=X-h : _y=�f$ : _dy=(Y-_y)
.(� X<>b � x=X+h : _y=�f$ : _Dy=(_y-Y)
/� X=a � _dy=_Dy
0� X=b � _Dy=_dy
1Ȏ type% �
2� 2  : _my=(_dy+_Dy)/2/h
3� 3
42 � _dy*_Dy>0 � _my=2*_dy*_Dy/(_dy+_Dy) � _my=0
5�
6=_my
7
8� ===========
9� Curves
:� ===========
;
<� �Curve(x$,y$,A,B,n%)
=� _path,a,b,u,v
>�PathBegin(_path)
?�@Curve(x$,y$,A,B,n%)
@�PathEnd
A�
B
C� �Curve(x$,y$,A,B,n%)
D� _path
E�PathBegin(_path)
F�@Curve(x$,y$,A,B,n%)
G�PathEnd
H
=_path
I
J� �@Curve(x$,y$,a,b,n%)
K$� h,t,x,y,h_min,h_max,undefined%
Lh_min=(b-a)/�MinNoofPoints
Mh_max=(b-a)/�MaxNoofPoints
N"� n%<=0 � h=h_max � h=(b-a)/n%
O	t=a-h
P� �
Q	� � �
Rundefined%=�
S"� n%<=0 � h=h_max � h=(b-a)/n%
T� �=17 � t>=b � �
U�
V	 t+=h
W � t>b � t=b
X x=�x$ : y=�y$
Y Ȏ undefined% �
Z%  � � : �Move(x,y) : undefined%=�
[   : �Draw(x,y)
\ �
]
� t>=b
^� �
_�
`
a
b� REM ==========
c� REM Parameters
d� REM ==========
e
f� �MaxNoofPoints=!(�+208)
g� �MinNoofPoints=!(�+212)
h
i� �DotsPerInch=!(�+216)
j 
k� �Resolution(max%,min%)
l!(�+208)=max%
m!(�+212)=min%
n�
o
p� �Accuracy(dots%)
q!(�+216)=dots%
r�
s
t*� �BarScalesLarge=((!(�+220))<<16)>>16
u
v$� �BarScalesSmall=(!(�+220))>>16
w
x� �BarScales(Div%,Sub%)
y!(�+220)=Div%+(Sub%<<16)
z�
{
|� �ScreenSize=|(�+240)
}
~� �ScreenSize(factor)
|(�+240)=factor
��
�
�
�
00000000  0d 00 01 2b f4 20 3e 20  44 72 61 77 42 61 73 69  |...+. > DrawBasi|
00000010  63 3a 52 65 73 6f 75 72  63 65 73 2e 43 61 6c 63  |c:Resources.Calc|
00000020  75 6c 75 73 2e 47 72 61  70 68 73 0d 00 02 04 0d  |ulus.Graphs.....|
00000030  00 03 3d f4 20 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |..=. ===========|
00000040  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
*
00000060  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 0d 00 04 05  |============....|
00000070  f4 0d 00 05 24 f4 20 63  6f 70 79 72 69 67 68 74  |....$. copyright|
00000080  20 4a 6f 65 20 54 61 79  6c 6f 72 20 4a 75 6e 65  | Joe Taylor June|
00000090  20 31 39 39 34 0d 00 06  05 f4 0d 00 07 3b f4 20  | 1994........;. |
000000a0  4e 2e 42 2e 20 46 6f 72  20 45 52 52 4f 52 20 54  |N.B. For ERROR T|
000000b0  48 52 4f 57 42 41 43 4b  20 74 6f 20 77 6f 72 6b  |HROWBACK to work|
000000c0  20 54 68 65 20 66 69 72  73 74 20 6c 69 6e 65 20  | The first line |
000000d0  61 62 6f 76 65 0d 00 08  37 f4 20 20 20 20 20 20  |above...7.      |
000000e0  4d 55 53 54 20 68 61 76  65 20 74 68 65 20 63 6f  |MUST have the co|
000000f0  72 72 65 63 74 20 70 61  74 68 6e 61 6d 65 20 6f  |rrect pathname o|
00000100  66 20 74 68 69 73 20 66  69 6c 65 2e 0d 00 09 3b  |f this file....;|
00000110  f4 20 20 20 20 20 20 49  66 20 79 6f 75 20 6d 6f  |.      If you mo|
00000120  76 65 20 74 68 65 20 6c  6f 63 61 74 69 6f 6e 20  |ve the location |
00000130  6f 66 20 74 68 65 20 66  69 6c 65 20 72 65 6d 65  |of the file reme|
00000140  6d 62 65 72 20 74 6f 0d  00 0a 1f f4 20 20 20 20  |mber to.....    |
00000150  20 20 61 6c 74 65 72 20  74 68 69 73 20 70 61 74  |  alter this pat|
00000160  68 6e 61 6d 65 2e 0d 00  0b 05 f4 0d 00 0c 3d f4  |hname.........=.|
00000170  20 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  | ===============|
00000180  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
*
000001a0  3d 3d 3d 3d 3d 3d 3d 3d  0d 00 0d 04 0d 00 0e 1c  |========........|
000001b0  f4 20 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |. **************|
000001c0  2a 2a 2a 2a 2a 2a 2a 2a  0d 00 0f 05 f4 0d 00 10  |********........|
000001d0  0e f4 20 43 41 4c 43 55  4c 55 53 0d 00 11 05 f4  |.. CALCULUS.....|
000001e0  0d 00 12 1c f4 20 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |..... **********|
000001f0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 0d 00 13 04  |************....|
00000200  0d 00 14 16 f4 20 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |..... ==========|
00000210  3d 3d 3d 3d 3d 3d 0d 00  15 11 f4 20 44 61 74 61  |======..... Data|
00000220  20 70 6f 69 6e 74 73 0d  00 16 16 f4 20 3d 3d 3d  | points..... ===|
00000230  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 0d 00 17  |=============...|
00000240  04 0d 00 18 16 dd 20 f2  4d 61 74 52 65 61 64 28  |...... .MatRead(|
00000250  64 61 74 61 28 29 29 0d  00 19 0d ea 20 5f 69 25  |data())..... _i%|
00000260  2c 5f 6a 25 0d 00 1a 12  c8 8e 20 de 28 64 61 74  |,_j%...... .(dat|
00000270  61 28 29 29 20 ca 0d 00  1b 07 c9 20 31 0d 00 1c  |a()) ...... 1...|
00000280  2c 20 e3 20 5f 69 25 3d  31 20 b8 20 de 28 64 61  |, . _i%=1 . .(da|
00000290  74 61 28 29 2c 31 29 20  3a 20 f3 20 64 61 74 61  |ta(),1) : . data|
000002a0  28 5f 69 25 29 20 3a 20  ed 0d 00 1d 07 c9 20 32  |(_i%) : ...... 2|
000002b0  0d 00 1e 1b 20 20 e3 20  5f 69 25 3d 31 20 b8 20  |....  . _i%=1 . |
000002c0  de 28 64 61 74 61 28 29  2c 31 29 0d 00 1f 1b 20  |.(data(),1).... |
000002d0  20 e3 20 5f 6a 25 3d 31  20 b8 20 de 28 64 61 74  | . _j%=1 . .(dat|
000002e0  61 28 29 2c 32 29 0d 00  20 16 20 20 20 f3 20 64  |a(),2).. .   . d|
000002f0  61 74 61 28 5f 69 25 2c  5f 6a 25 29 0d 00 21 08  |ata(_i%,_j%)..!.|
00000300  20 20 20 ed 0d 00 22 08  20 20 20 ed 0d 00 23 05  |   ...".   ...#.|
00000310  cb 0d 00 24 05 e1 0d 00  25 04 0d 00 26 22 dd 20  |...$....%...&". |
00000320  f2 4d 61 78 4d 69 6e 28  64 61 74 61 28 29 2c f8  |.MaxMin(data(),.|
00000330  20 6d 69 6e 2c 20 f8 20  6d 61 78 29 0d 00 27 0d  | min, . max)..'.|
00000340  ea 20 5f 69 25 2c 5f 6a  25 0d 00 28 1a 6d 69 6e  |. _i%,_j%..(.min|
00000350  3d 32 5e 33 30 20 3a 20  6d 61 78 3d 2d 28 32 5e  |=2^30 : max=-(2^|
00000360  33 30 29 0d 00 29 12 c8  8e 20 de 28 64 61 74 61  |30)..)... .(data|
00000370  28 29 29 20 ca 0d 00 2a  07 c9 20 31 0d 00 2b 1a  |()) ...*.. 1..+.|
00000380  20 e3 20 5f 69 25 3d 31  20 b8 20 de 28 64 61 74  | . _i%=1 . .(dat|
00000390  61 28 29 2c 31 29 0d 00  2c 25 20 20 e7 20 6d 69  |a(),1)..,%  . mi|
000003a0  6e 3e 64 61 74 61 28 5f  69 25 29 20 8c 20 6d 69  |n>data(_i%) . mi|
000003b0  6e 3d 64 61 74 61 28 5f  69 25 29 0d 00 2d 25 20  |n=data(_i%)..-% |
000003c0  20 e7 20 6d 61 78 3c 64  61 74 61 28 5f 69 25 29  | . max<data(_i%)|
000003d0  20 8c 20 6d 61 78 3d 64  61 74 61 28 5f 69 25 29  | . max=data(_i%)|
000003e0  0d 00 2e 07 20 20 ed 0d  00 2f 07 c9 20 32 0d 00  |....  .../.. 2..|
000003f0  30 1b 20 20 e3 20 5f 69  25 3d 31 20 b8 20 de 28  |0.  . _i%=1 . .(|
00000400  64 61 74 61 28 29 2c 31  29 0d 00 31 1b 20 20 e3  |data(),1)..1.  .|
00000410  20 5f 6a 25 3d 31 20 b8  20 de 28 64 61 74 61 28  | _j%=1 . .(data(|
00000420  29 2c 32 29 0d 00 32 2e  20 20 20 e7 20 6d 69 6e  |),2)..2.   . min|
00000430  3e 64 61 74 61 28 5f 69  25 2c 5f 6a 25 29 20 8c  |>data(_i%,_j%) .|
00000440  20 6d 69 6e 3d 64 61 74  61 28 5f 69 25 2c 5f 6a  | min=data(_i%,_j|
00000450  25 29 0d 00 33 2e 20 20  20 e7 20 6d 61 78 3c 64  |%)..3.   . max<d|
00000460  61 74 61 28 5f 69 25 2c  5f 6a 25 29 20 8c 20 6d  |ata(_i%,_j%) . m|
00000470  61 78 3d 64 61 74 61 28  5f 69 25 2c 5f 6a 25 29  |ax=data(_i%,_j%)|
00000480  0d 00 34 08 20 20 20 ed  0d 00 35 08 20 20 20 ed  |..4.   ...5.   .|
00000490  0d 00 36 05 cb 0d 00 37  05 e1 0d 00 38 04 0d 00  |..6....7....8...|
000004a0  39 20 f4 20 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |9 . ============|
000004b0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 0d 00  |==============..|
000004c0  3a 1e f4 20 50 69 65 20  63 68 61 72 74 20 6f 66  |:.. Pie chart of|
000004d0  20 64 61 74 61 20 70 6f  69 6e 74 73 0d 00 3b 20  | data points..; |
000004e0  f4 20 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |. ==============|
000004f0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 0d 00 3c 04  |============..<.|
00000500  0d 00 3d 12 dd 20 f2 50  69 65 28 64 61 74 61 28  |..=.. .Pie(data(|
00000510  29 29 0d 00 3e 12 c8 8e  20 de 28 64 61 74 61 28  |))..>... .(data(|
00000520  29 29 20 ca 0d 00 3f 19  20 c9 20 31 20 3a 20 f2  |)) ...?. . 1 : .|
00000530  50 69 65 5f 31 28 64 61  74 61 28 29 29 0d 00 40  |Pie_1(data())..@|
00000540  19 20 c9 20 32 20 3a 20  f2 50 69 65 5f 32 28 64  |. . 2 : .Pie_2(d|
00000550  61 74 61 28 29 29 0d 00  41 05 cb 0d 00 42 05 e1  |ata())..A....B..|
00000560  0d 00 43 04 0d 00 44 14  dd 20 f2 50 69 65 5f 31  |..C...D.. .Pie_1|
00000570  28 64 61 74 61 28 29 29  0d 00 45 3e ea 20 5f 69  |(data())..E>. _i|
00000580  25 2c 5f 6e 25 2c 5f 61  6e 67 6c 65 2c 5f 74 68  |%,_n%,_angle,_th|
00000590  65 74 61 2c 5f 73 75 6d  2c 5f 72 61 64 69 75 73  |eta,_sum,_radius|
000005a0  2c 5f 73 65 63 74 6f 72  2c 5f 78 2c 5f 79 2c 5f  |,_sector,_x,_y,_|
000005b0  78 63 2c 5f 79 63 0d 00  46 13 5f 6e 25 3d de 28  |xc,_yc..F._n%=.(|
000005c0  64 61 74 61 28 29 2c 31  29 0d 00 47 26 e3 20 5f  |data(),1)..G&. _|
000005d0  69 25 3d 31 20 b8 20 5f  6e 25 20 3a 20 5f 73 75  |i%=1 . _n% : _su|
000005e0  6d 2b 3d 64 61 74 61 28  5f 69 25 29 20 3a ed 0d  |m+=data(_i%) :..|
000005f0  00 48 0e e7 20 5f 73 75  6d 3e 30 20 8c 0d 00 49  |.H.. _sum>0 ...I|
00000600  29 20 5f 61 6e 67 6c 65  3d 32 2a af 2f 5f 73 75  |) _angle=2*./_su|
00000610  6d 20 3a 20 5f 74 68 65  74 61 3d 30 20 3a 20 5f  |m : _theta=0 : _|
00000620  63 6f 6c 25 3d 37 0d 00  4a 06 20 cc 0d 00 4b 2f  |col%=7..J. ...K/|
00000630  20 85 20 30 2c 20 22 4e  65 67 61 74 69 76 65 20  | . 0, "Negative |
00000640  6f 72 20 5a 65 72 6f 20  74 6f 74 61 6c 20 69 6e  |or Zero total in|
00000650  20 70 69 65 20 63 68 61  72 74 22 0d 00 4c 06 20  | pie chart"..L. |
00000660  cd 0d 00 4d 31 20 f2 46  72 61 6d 65 43 6f 6f 72  |...M1 .FrameCoor|
00000670  64 73 28 30 2c a4 46 52  41 4d 45 5f 57 69 64 74  |ds(0,.FRAME_Widt|
00000680  68 2c 30 2c a4 46 52 41  4d 45 5f 48 65 69 67 68  |h,0,.FRAME_Heigh|
00000690  74 29 0d 00 4e 2d 20 5f  78 63 3d a4 46 52 41 4d  |t)..N- _xc=.FRAM|
000006a0  45 5f 57 69 64 74 68 2f  32 20 3a 20 5f 79 63 3d  |E_Width/2 : _yc=|
000006b0  a4 46 52 41 4d 45 5f 48  65 69 67 68 74 2f 32 0d  |.FRAME_Height/2.|
000006c0  00 4f 2b 20 e7 20 5f 78  63 3c 5f 79 63 20 8c 20  |.O+ . _xc<_yc . |
000006d0  5f 72 61 64 69 75 73 3d  5f 78 63 20 8b 20 20 5f  |_radius=_xc .  _|
000006e0  72 61 64 69 75 73 3d 5f  79 63 0d 00 50 20 20 5f  |radius=_yc..P  _|
000006f0  72 61 64 69 75 73 3d 5f  72 61 64 69 75 73 2a a4  |radius=_radius*.|
00000700  53 63 72 65 65 6e 53 69  7a 65 0d 00 51 11 e3 20  |ScreenSize..Q.. |
00000710  5f 69 25 3d 31 20 b8 20  5f 6e 25 0d 00 52 3d 20  |_i%=1 . _n%..R= |
00000720  5f 73 65 63 74 6f 72 3d  a4 53 65 63 74 6f 72 28  |_sector=.Sector(|
00000730  5f 78 63 2c 5f 79 63 2c  5f 72 61 64 69 75 73 2c  |_xc,_yc,_radius,|
00000740  5f 61 6e 67 6c 65 2a 64  61 74 61 28 5f 69 25 29  |_angle*data(_i%)|
00000750  2c 5f 74 68 65 74 61 29  0d 00 53 20 20 5f 63 6f  |,_theta)..S  _co|
00000760  6c 25 2b 3d 31 20 3a 20  5f 63 6f 6c 25 3d 5f 63  |l%+=1 : _col%=_c|
00000770  6f 6c 25 20 83 20 31 36  0d 00 54 1a 20 f2 46 69  |ol% . 16..T. .Fi|
00000780  6c 6c 40 28 5f 73 65 63  74 6f 72 2c 5f 63 6f 6c  |ll@(_sector,_col|
00000790  25 29 0d 00 55 17 20 f2  44 72 61 77 50 61 74 68  |%)..U. .DrawPath|
000007a0  28 5f 73 65 63 74 6f 72  29 0d 00 56 34 20 5f 78  |(_sector)..V4 _x|
000007b0  3d 5f 78 63 2b 5f 72 61  64 69 75 73 2a 31 2e 31  |=_xc+_radius*1.1|
000007c0  2a 9b 28 5f 61 6e 67 6c  65 2a 64 61 74 61 28 5f  |*.(_angle*data(_|
000007d0  69 25 29 2f 32 2b 5f 74  68 65 74 61 29 0d 00 57  |i%)/2+_theta)..W|
000007e0  34 20 5f 79 3d 5f 79 63  2b 5f 72 61 64 69 75 73  |4 _y=_yc+_radius|
000007f0  2a 31 2e 31 2a b5 28 5f  61 6e 67 6c 65 2a 64 61  |*1.1*.(_angle*da|
00000800  74 61 28 5f 69 25 29 2f  32 2b 5f 74 68 65 74 61  |ta(_i%)/2+_theta|
00000810  29 0d 00 58 1f 20 f2 50  72 69 6e 74 28 c3 28 64  |)..X. .Print(.(d|
00000820  61 74 61 28 5f 69 25 29  29 2c 5f 78 2c 5f 79 29  |ata(_i%)),_x,_y)|
00000830  0d 00 59 1d 20 5f 74 68  65 74 61 2b 3d 5f 61 6e  |..Y. _theta+=_an|
00000840  67 6c 65 2a 64 61 74 61  28 5f 69 25 29 0d 00 5a  |gle*data(_i%)..Z|
00000850  07 20 ed 20 0d 00 5b 05  e1 0d 00 5c 04 0d 00 5d  |. . ..[....\...]|
00000860  14 dd 20 f2 50 69 65 5f  32 28 64 61 74 61 28 29  |.. .Pie_2(data()|
00000870  29 0d 00 5e 4a ea 20 5f  69 25 2c 5f 6a 25 2c 5f  |)..^J. _i%,_j%,_|
00000880  6d 25 2c 5f 6e 25 2c 5f  61 6e 67 6c 65 2c 5f 74  |m%,_n%,_angle,_t|
00000890  68 65 74 61 2c 5f 73 75  6d 2c 5f 72 61 64 69 75  |heta,_sum,_radiu|
000008a0  73 2c 5f 73 65 63 74 6f  72 2c 5f 78 2c 5f 79 2c  |s,_sector,_x,_y,|
000008b0  5f 78 63 2c 5f 79 63 2c  5f 70 25 0d 00 5f 3f 5f  |_xc,_yc,_p%.._?_|
000008c0  70 25 3d a8 28 32 31 2a  32 35 36 2a 31 38 30 2f  |p%=.(21*256*180/|
000008d0  32 2e 35 34 2b 2e 35 29  2d a4 46 72 61 6d 65 5f  |2.54+.5)-.Frame_|
000008e0  78 20 3a 20 5f 70 25 3d  5f 70 25 20 81 20 a4 46  |x : _p%=_p% . .F|
000008f0  72 61 6d 65 5f 57 69 64  74 68 0d 00 60 13 5f 6e  |rame_Width..`._n|
00000900  25 3d de 28 64 61 74 61  28 29 2c 32 29 0d 00 61  |%=.(data(),2)..a|
00000910  30 f2 46 72 61 6d 65 43  6f 6f 72 64 73 28 30 2c  |0.FrameCoords(0,|
00000920  a4 46 52 41 4d 45 5f 57  69 64 74 68 2c 30 2c a4  |.FRAME_Width,0,.|
00000930  46 52 41 4d 45 5f 48 65  69 67 68 74 29 0d 00 62  |FRAME_Height)..b|
00000940  2c 5f 78 63 3d a4 46 52  41 4d 45 5f 57 69 64 74  |,_xc=.FRAME_Widt|
00000950  68 2f 32 20 3a 20 5f 79  63 3d a4 46 52 41 4d 45  |h/2 : _yc=.FRAME|
00000960  5f 48 65 69 67 68 74 2f  32 0d 00 63 2b 20 e7 20  |_Height/2..c+ . |
00000970  5f 78 63 3c 5f 79 63 20  8c 20 5f 72 61 64 69 75  |_xc<_yc . _radiu|
00000980  73 3d 5f 78 63 20 8b 20  20 5f 72 61 64 69 75 73  |s=_xc .  _radius|
00000990  3d 5f 79 63 0d 00 64 20  20 5f 72 61 64 69 75 73  |=_yc..d  _radius|
000009a0  3d 5f 72 61 64 69 75 73  2a a4 53 63 72 65 65 6e  |=_radius*.Screen|
000009b0  53 69 7a 65 0d 00 65 19  e3 20 5f 6a 25 3d 31 20  |Size..e.. _j%=1 |
000009c0  b8 20 de 28 64 61 74 61  28 29 2c 31 29 0d 00 66  |. .(data(),1)..f|
000009d0  0a 5f 73 75 6d 3d 30 0d  00 67 2a e3 20 5f 69 25  |._sum=0..g*. _i%|
000009e0  3d 31 20 b8 20 5f 6e 25  20 3a 20 5f 73 75 6d 2b  |=1 . _n% : _sum+|
000009f0  3d 64 61 74 61 28 5f 6a  25 2c 5f 69 25 29 20 3a  |=data(_j%,_i%) :|
00000a00  ed 0d 00 68 0e e7 20 5f  73 75 6d 3e 30 20 8c 0d  |...h.. _sum>0 ..|
00000a10  00 69 29 20 5f 61 6e 67  6c 65 3d 32 2a af 2f 5f  |.i) _angle=2*./_|
00000a20  73 75 6d 20 3a 20 5f 74  68 65 74 61 3d 30 20 3a  |sum : _theta=0 :|
00000a30  20 5f 63 6f 6c 25 3d 37  0d 00 6a 06 20 cc 0d 00  | _col%=7..j. ...|
00000a40  6b 2f 20 85 20 30 2c 20  22 4e 65 67 61 74 69 76  |k/ . 0, "Negativ|
00000a50  65 20 6f 72 20 5a 65 72  6f 20 74 6f 74 61 6c 20  |e or Zero total |
00000a60  69 6e 20 70 69 65 20 63  68 61 72 74 22 0d 00 6c  |in pie chart"..l|
00000a70  07 20 cd 20 0d 00 6d 11  e3 20 5f 69 25 3d 31 20  |. . ..m.. _i%=1 |
00000a80  b8 20 5f 6e 25 0d 00 6e  41 20 5f 73 65 63 74 6f  |. _n%..nA _secto|
00000a90  72 3d a4 53 65 63 74 6f  72 28 5f 78 63 2c 5f 79  |r=.Sector(_xc,_y|
00000aa0  63 2c 5f 72 61 64 69 75  73 2c 5f 61 6e 67 6c 65  |c,_radius,_angle|
00000ab0  2a 64 61 74 61 28 5f 6a  25 2c 5f 69 25 29 2c 5f  |*data(_j%,_i%),_|
00000ac0  74 68 65 74 61 29 0d 00  6f 20 20 5f 63 6f 6c 25  |theta)..o  _col%|
00000ad0  2b 3d 31 20 3a 20 5f 63  6f 6c 25 3d 5f 63 6f 6c  |+=1 : _col%=_col|
00000ae0  25 20 83 20 31 36 0d 00  70 1a 20 f2 46 69 6c 6c  |% . 16..p. .Fill|
00000af0  40 28 5f 73 65 63 74 6f  72 2c 5f 63 6f 6c 25 29  |@(_sector,_col%)|
00000b00  0d 00 71 17 20 f2 44 72  61 77 50 61 74 68 28 5f  |..q. .DrawPath(_|
00000b10  73 65 63 74 6f 72 29 0d  00 72 38 20 5f 78 3d 5f  |sector)..r8 _x=_|
00000b20  78 63 2b 5f 72 61 64 69  75 73 2a 31 2e 31 2a 9b  |xc+_radius*1.1*.|
00000b30  28 5f 61 6e 67 6c 65 2a  64 61 74 61 28 5f 6a 25  |(_angle*data(_j%|
00000b40  2c 5f 69 25 29 2f 32 2b  5f 74 68 65 74 61 29 0d  |,_i%)/2+_theta).|
00000b50  00 73 38 20 5f 79 3d 5f  79 63 2b 5f 72 61 64 69  |.s8 _y=_yc+_radi|
00000b60  75 73 2a 31 2e 31 2a b5  28 5f 61 6e 67 6c 65 2a  |us*1.1*.(_angle*|
00000b70  64 61 74 61 28 5f 6a 25  2c 5f 69 25 29 2f 32 2b  |data(_j%,_i%)/2+|
00000b80  5f 74 68 65 74 61 29 0d  00 74 23 20 f2 50 72 69  |_theta)..t# .Pri|
00000b90  6e 74 28 c3 28 64 61 74  61 28 5f 6a 25 2c 5f 69  |nt(.(data(_j%,_i|
00000ba0  25 29 29 2c 5f 78 2c 5f  79 29 0d 00 75 21 20 5f  |%)),_x,_y)..u! _|
00000bb0  74 68 65 74 61 2b 3d 5f  61 6e 67 6c 65 2a 64 61  |theta+=_angle*da|
00000bc0  74 61 28 5f 6a 25 2c 5f  69 25 29 0d 00 76 06 20  |ta(_j%,_i%)..v. |
00000bd0  ed 0d 00 77 27 f2 50 72  69 6e 74 28 22 54 61 62  |...w'.Print("Tab|
00000be0  6c 65 20 22 2b c3 5f 6a  25 2c 5f 78 63 2d 5f 72  |le "+._j%,_xc-_r|
00000bf0  61 64 69 75 73 2c 30 29  0d 00 78 5e f2 46 72 61  |adius,0)..x^.Fra|
00000c00  6d 65 53 69 7a 65 28 28  5f 6a 25 20 83 20 5f 70  |meSize((_j% . _p|
00000c10  25 29 2a a4 46 52 41 4d  45 5f 57 69 64 74 68 2c  |%)*.FRAME_Width,|
00000c20  28 5f 6a 25 20 81 20 5f  70 25 29 2a a4 46 52 41  |(_j% . _p%)*.FRA|
00000c30  4d 45 5f 48 65 69 67 68  74 2c a4 46 52 41 4d 45  |ME_Height,.FRAME|
00000c40  5f 57 69 64 74 68 2c a4  46 52 41 4d 45 5f 48 65  |_Width,.FRAME_He|
00000c50  69 67 68 74 29 20 0d 00  79 05 ed 0d 00 7a 05 e1  |ight) ..y....z..|
00000c60  0d 00 7b 04 0d 00 7c 20  f4 20 3d 3d 3d 3d 3d 3d  |..{...| . ======|
00000c70  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00000c80  3d 3d 3d 3d 0d 00 7d 1f  f4 20 42 61 72 20 63 68  |====..}.. Bar ch|
00000c90  61 72 74 73 20 6f 66 20  64 61 74 61 20 70 6f 69  |arts of data poi|
00000ca0  6e 74 73 0d 00 7e 20 f4  20 3d 3d 3d 3d 3d 3d 3d  |nts..~ . =======|
00000cb0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00000cc0  3d 3d 3d 0d 00 7f 04 0d  00 80 17 dd 20 f2 42 61  |===......... .Ba|
00000cd0  72 43 68 61 72 74 28 64  61 74 61 28 29 29 0d 00  |rChart(data())..|
00000ce0  81 1b 20 f2 48 69 73 74  6f 67 72 61 6d 28 64 61  |.. .Histogram(da|
00000cf0  74 61 28 29 2c 2e 32 35  29 0d 00 82 06 20 e1 0d  |ta(),.25).... ..|
00000d00  00 83 04 0d 00 84 1c dd  20 f2 48 69 73 74 6f 67  |........ .Histog|
00000d10  72 61 6d 28 64 61 74 61  28 29 2c 67 61 70 29 0d  |ram(data(),gap).|
00000d20  00 85 29 ea 20 5f 62 25  2c 5f 75 2c 5f 76 2c 5f  |..). _b%,_u,_v,_|
00000d30  69 25 2c 5f 6a 25 2c 5f  62 61 72 2c 5f 77 69 64  |i%,_j%,_bar,_wid|
00000d40  74 68 2c 5f 63 6f 6c 25  0d 00 86 25 20 5f 62 25  |th,_col%...% _b%|
00000d50  3d de 28 64 61 74 61 28  29 2c 31 29 20 3a 20 5f  |=.(data(),1) : _|
00000d60  77 69 64 74 68 3d 28 31  2d 67 61 70 29 0d 00 87  |width=(1-gap)...|
00000d70  2a 20 f2 4d 61 78 4d 69  6e 28 64 61 74 61 28 29  |* .MaxMin(data()|
00000d80  2c 5f 75 2c 5f 76 29 20  3a 20 e7 20 5f 75 3e 30  |,_u,_v) : . _u>0|
00000d90  20 8c 20 5f 75 3d 30 0d  00 88 22 20 f2 52 65 64  | . _u=0..." .Red|
00000da0  75 63 65 46 72 61 6d 65  53 69 7a 65 28 a4 53 63  |uceFrameSize(.Sc|
00000db0  72 65 65 6e 53 69 7a 65  29 0d 00 89 19 20 f2 53  |reenSize).... .S|
00000dc0  63 72 65 65 6e 28 30 2c  5f 62 25 2c 5f 75 2c 5f  |creen(0,_b%,_u,_|
00000dd0  76 29 0d 00 8a 36 20 f2  41 78 65 73 53 63 61 6c  |v)...6 .AxesScal|
00000de0  65 28 5f 62 25 2c 30 2c  a4 42 61 72 53 63 61 6c  |e(_b%,0,.BarScal|
00000df0  65 73 4c 61 72 67 65 2c  a4 42 61 72 53 63 61 6c  |esLarge,.BarScal|
00000e00  65 73 53 6d 61 6c 6c 29  0d 00 8b 13 20 c8 8e 20  |esSmall).... .. |
00000e10  de 28 64 61 74 61 28 29  29 20 ca 0d 00 8c 0b 20  |.(data()) ..... |
00000e20  20 20 c9 20 31 20 0d 00  8d 14 20 20 20 e3 20 5f  |  . 1 ....   . _|
00000e30  69 25 3d 31 20 b8 20 5f  62 25 0d 00 8e 31 20 20  |i%=1 . _b%...1  |
00000e40  20 20 5f 62 61 72 3d a4  52 65 63 74 61 6e 67 6c  |  _bar=.Rectangl|
00000e50  65 28 5f 69 25 2d 31 2c  30 2c 5f 77 69 64 74 68  |e(_i%-1,0,_width|
00000e60  2c 64 61 74 61 28 5f 69  25 29 29 0d 00 8f 19 20  |,data(_i%)).... |
00000e70  20 20 20 f2 46 69 6c 6c  40 28 5f 62 61 72 2c a4  |   .Fill@(_bar,.|
00000e80  52 65 64 29 0d 00 90 17  20 20 20 20 f2 44 72 61  |Red)....    .Dra|
00000e90  77 50 61 74 68 28 5f 62  61 72 29 0d 00 91 0a 20  |wPath(_bar).... |
00000ea0  20 20 20 ed 20 0d 00 92  0a 20 20 20 c9 20 32 0d  |   . ....   . 2.|
00000eb0  00 93 10 20 20 20 20 5f  63 6f 6c 25 3d 37 20 0d  |...    _col%=7 .|
00000ec0  00 94 15 20 20 20 20 e3  20 5f 69 25 3d 31 20 b8  |...    . _i%=1 .|
00000ed0  20 5f 62 25 0d 00 95 10  20 20 20 20 5f 63 6f 6c  | _b%....    _col|
00000ee0  25 2b 3d 31 0d 00 96 1d  20 20 20 20 e3 20 5f 6a  |%+=1....    . _j|
00000ef0  25 3d 31 20 b8 20 de 28  64 61 74 61 28 29 2c 32  |%=1 . .(data(),2|
00000f00  29 0d 00 97 55 20 20 20  20 20 5f 62 61 72 3d a4  |)...U     _bar=.|
00000f10  52 65 63 74 61 6e 67 6c  65 28 5f 6a 25 2d 31 2b  |Rectangle(_j%-1+|
00000f20  28 5f 69 25 2d 31 29 2a  5f 77 69 64 74 68 2f de  |(_i%-1)*_width/.|
00000f30  28 64 61 74 61 28 29 2c  31 29 2f 32 2c 30 2c 5f  |(data(),1)/2,0,_|
00000f40  77 69 64 74 68 2f 32 2c  64 61 74 61 28 5f 69 25  |width/2,data(_i%|
00000f50  2c 5f 6a 25 29 29 0d 00  98 1b 20 20 20 20 20 f2  |,_j%))....     .|
00000f60  46 69 6c 6c 40 28 5f 62  61 72 2c 5f 63 6f 6c 25  |Fill@(_bar,_col%|
00000f70  29 0d 00 99 18 20 20 20  20 20 f2 44 72 61 77 50  |)....     .DrawP|
00000f80  61 74 68 28 5f 62 61 72  29 0d 00 9a 0a 20 20 20  |ath(_bar)....   |
00000f90  20 20 ed 0d 00 9b 0a 20  20 20 20 20 ed 0d 00 9c  |  .....     ....|
00000fa0  07 20 20 cb 0d 00 9d 05  e1 0d 00 9e 04 0d 00 9f  |.  .............|
00000fb0  04 0d 00 a0 20 f4 20 3d  3d 3d 3d 3d 3d 3d 3d 3d  |.... . =========|
00000fc0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00000fd0  3d 0d 00 a1 1f f4 20 50  6f 69 6e 74 20 70 6c 6f  |=..... Point plo|
00000fe0  74 20 6f 66 20 64 61 74  61 20 70 6f 69 6e 74 73  |t of data points|
00000ff0  0d 00 a2 20 f4 20 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |... . ==========|
00001000  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00001010  0d 00 a3 04 0d 00 a4 19  dd 20 a4 50 6c 6f 74 28  |......... .Plot(|
00001020  64 61 74 61 28 29 2c 78  25 2c 79 25 29 0d 00 a5  |data(),x%,y%)...|
00001030  0b ea 20 5f 70 61 74 68  0d 00 a6 15 f2 50 61 74  |.. _path.....Pat|
00001040  68 42 65 67 69 6e 28 5f  70 61 74 68 29 0d 00 a7  |hBegin(_path)...|
00001050  1a f2 40 50 6c 6f 74 28  64 61 74 61 28 29 2c 94  |..@Plot(data(),.|
00001060  78 25 2c 94 79 25 29 0d  00 a8 0c f2 50 61 74 68  |x%,.y%).....Path|
00001070  45 6e 64 0d 00 a9 0a 3d  5f 70 61 74 68 0d 00 aa  |End....=_path...|
00001080  04 0d 00 ab 19 dd 20 f2  50 6c 6f 74 28 64 61 74  |...... .Plot(dat|
00001090  61 28 29 2c 78 25 2c 79  25 29 0d 00 ac 0f ea 20  |a(),x%,y%)..... |
000010a0  5f 70 61 74 68 2c 5f 79  25 0d 00 ad 0b c8 8e 20  |_path,_y%...... |
000010b0  79 25 20 ca 0d 00 ae 08  20 c9 20 b9 0d 00 af 1b  |y% ..... . .....|
000010c0  20 20 e3 20 5f 79 25 3d  31 20 b8 20 de 28 64 61  |  . _y%=1 . .(da|
000010d0  74 61 28 29 2c 32 29 0d  00 b0 11 20 20 e7 20 78  |ta(),2)....  . x|
000010e0  25 3c 3e 5f 79 25 20 8c  0d 00 b1 31 20 20 20 f2  |%<>_y% ....1   .|
000010f0  53 79 6d 62 6f 6c 28 a4  53 79 6d 62 6f 6c 54 79  |Symbol(.SymbolTy|
00001100  70 65 2b 28 5f 79 25 20  83 20 31 30 29 2c a4 50  |pe+(_y% . 10),.P|
00001110  6f 69 6e 74 53 69 7a 65  29 0d 00 b2 22 20 20 20  |ointSize)..."   |
00001120  5f 70 61 74 68 3d a4 50  6c 6f 74 28 64 61 74 61  |_path=.Plot(data|
00001130  28 29 2c 78 25 2c 5f 79  25 29 20 0d 00 b3 31 20  |(),x%,_y%) ...1 |
00001140  20 20 f2 46 69 6c 6c 40  28 5f 70 61 74 68 2c a4  |  .Fill@(_path,.|
00001150  44 65 73 6b 74 6f 70 43  6f 6c 6f 75 72 28 37 2b  |DesktopColour(7+|
00001160  20 28 5f 79 25 20 83 20  38 29 29 29 0d 00 b4 17  | (_y% . 8)))....|
00001170  20 20 20 f2 44 72 61 77  50 61 74 68 28 5f 70 61  |   .DrawPath(_pa|
00001180  74 68 29 0d 00 b5 08 20  20 cd 20 0d 00 b6 08 20  |th)....  . .... |
00001190  20 ed 20 0d 00 b7 06 20  7f 0d 00 b8 1f 20 20 5f  | . .... .....  _|
000011a0  70 61 74 68 3d a4 50 6c  6f 74 28 64 61 74 61 28  |path=.Plot(data(|
000011b0  29 2c 78 25 2c 79 25 29  0d 00 b9 1f 20 20 f2 46  |),x%,y%)....  .F|
000011c0  69 6c 6c 40 28 5f 70 61  74 68 2c a4 46 69 6c 6c  |ill@(_path,.Fill|
000011d0  43 6f 6c 6f 75 72 29 0d  00 ba 17 20 20 f2 44 72  |Colour)....  .Dr|
000011e0  61 77 50 61 74 68 28 5f  70 61 74 68 29 20 0d 00  |awPath(_path) ..|
000011f0  bb 05 cb 0d 00 bc 05 e1  0d 00 bd 04 0d 00 be 1a  |................|
00001200  dd 20 f2 40 50 6c 6f 74  28 64 61 74 61 28 29 2c  |. .@Plot(data(),|
00001210  78 25 2c 79 25 29 0d 00  bf 09 ea 20 5f 69 25 0d  |x%,y%)..... _i%.|
00001220  00 c0 19 e3 20 5f 69 25  3d 31 20 b8 20 de 28 64  |.... _i%=1 . .(d|
00001230  61 74 61 28 29 2c 31 29  0d 00 c1 27 20 f2 40 50  |ata(),1)...' .@P|
00001240  6f 69 6e 74 28 64 61 74  61 28 5f 69 25 2c 78 25  |oint(data(_i%,x%|
00001250  29 2c 64 61 74 61 28 5f  69 25 2c 79 25 29 29 0d  |),data(_i%,y%)).|
00001260  00 c2 06 20 ed 0d 00 c3  05 e1 0d 00 c4 04 0d 00  |... ............|
00001270  c5 20 f4 20 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |. . ============|
00001280  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 0d 00  |==============..|
00001290  c6 1e f4 20 4c 69 6e 65  20 70 6c 6f 74 20 6f 66  |... Line plot of|
000012a0  20 64 61 74 61 20 70 6f  69 6e 74 73 0d 00 c7 20  | data points... |
000012b0  f4 20 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |. ==============|
000012c0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 0d 00 c8 04  |============....|
000012d0  0d 00 c9 1d dd 20 a4 4c  69 6e 65 50 6c 6f 74 28  |..... .LinePlot(|
000012e0  64 61 74 61 28 29 2c 78  25 2c 79 25 29 0d 00 ca  |data(),x%,y%)...|
000012f0  0b ea 20 5f 70 61 74 68  0d 00 cb 15 f2 50 61 74  |.. _path.....Pat|
00001300  68 42 65 67 69 6e 28 5f  70 61 74 68 29 0d 00 cc  |hBegin(_path)...|
00001310  1e f2 40 4c 69 6e 65 50  6c 6f 74 28 64 61 74 61  |..@LinePlot(data|
00001320  28 29 2c 94 78 25 2c 94  79 25 29 0d 00 cd 0c f2  |(),.x%,.y%).....|
00001330  50 61 74 68 45 6e 64 0d  00 ce 0a 3d 5f 70 61 74  |PathEnd....=_pat|
00001340  68 0d 00 cf 04 0d 00 d0  1d dd 20 f2 4c 69 6e 65  |h......... .Line|
00001350  50 6c 6f 74 28 64 61 74  61 28 29 2c 78 25 2c 79  |Plot(data(),x%,y|
00001360  25 29 0d 00 d1 0f ea 20  5f 70 61 74 68 2c 5f 79  |%)..... _path,_y|
00001370  25 0d 00 d2 0b c8 8e 20  79 25 20 ca 0d 00 d3 09  |%...... y% .....|
00001380  20 c9 20 b9 20 0d 00 d4  1b 20 20 e3 20 5f 79 25  | . . ....  . _y%|
00001390  3d 31 20 b8 20 de 28 64  61 74 61 28 29 2c 32 29  |=1 . .(data(),2)|
000013a0  0d 00 d5 31 20 20 20 e7  20 78 25 3c 3e 5f 79 25  |...1   . x%<>_y%|
000013b0  20 8c 20 5f 70 61 74 68  3d a4 4c 69 6e 65 50 6c  | . _path=.LinePl|
000013c0  6f 74 28 64 61 74 61 28  29 2c 78 25 2c 5f 79 25  |ot(data(),x%,_y%|
000013d0  29 0d 00 d6 09 20 20 20  ed 20 0d 00 d7 06 20 7f  |)....   . .... .|
000013e0  0d 00 d8 24 20 5f 70 61  74 68 3d a4 4c 69 6e 65  |...$ _path=.Line|
000013f0  50 6c 6f 74 28 64 61 74  61 28 29 2c 78 25 2c 79  |Plot(data(),x%,y|
00001400  25 29 20 20 0d 00 d9 05  cb 0d 00 da 05 e1 0d 00  |%)  ............|
00001410  db 04 0d 00 dc 1e dd 20  f2 40 4c 69 6e 65 50 6c  |....... .@LinePl|
00001420  6f 74 28 64 61 74 61 28  29 2c 78 25 2c 79 25 29  |ot(data(),x%,y%)|
00001430  0d 00 dd 0f ea 20 5f 69  25 2c 5f 78 2c 5f 79 0d  |..... _i%,_x,_y.|
00001440  00 de 19 e3 20 5f 69 25  3d 31 20 b8 20 de 28 64  |.... _i%=1 . .(d|
00001450  61 74 61 28 29 2c 31 29  0d 00 df 26 20 5f 78 3d  |ata(),1)...& _x=|
00001460  64 61 74 61 28 5f 69 25  2c 78 25 29 20 3a 20 5f  |data(_i%,x%) : _|
00001470  79 3d 64 61 74 61 28 5f  69 25 2c 79 25 29 0d 00  |y=data(_i%,y%)..|
00001480  e0 2a 20 e7 20 5f 69 25  3d 31 20 8c 20 f2 4d 6f  |.* . _i%=1 . .Mo|
00001490  76 65 28 5f 78 2c 5f 79  29 20 8b 20 f2 44 72 61  |ve(_x,_y) . .Dra|
000014a0  77 28 5f 78 2c 5f 79 29  0d 00 e1 06 20 ed 0d 00  |w(_x,_y).... ...|
000014b0  e2 1c f2 43 6c 6f 73 65  50 6c 6f 74 28 64 61 74  |...ClosePlot(dat|
000014c0  61 28 29 2c 78 25 2c 79  25 29 0d 00 e3 05 e1 0d  |a(),x%,y%)......|
000014d0  00 e4 04 0d 00 e5 1e dd  20 f2 43 6c 6f 73 65 50  |........ .CloseP|
000014e0  6c 6f 74 28 64 61 74 61  28 29 2c 78 25 2c 79 25  |lot(data(),x%,y%|
000014f0  29 0d 00 e6 10 ea 20 63  6c 6f 73 65 64 25 2c 6e  |)..... closed%,n|
00001500  25 0d 00 e7 12 6e 25 3d  de 28 64 61 74 61 28 29  |%....n%=.(data()|
00001510  2c 31 29 0d 00 e8 30 63  6c 6f 73 65 64 25 3d 94  |,1)...0closed%=.|
00001520  28 64 61 74 61 28 30 2c  78 25 29 2d 64 61 74 61  |(data(0,x%)-data|
00001530  28 6e 25 2c 78 25 29 29  2a a4 58 5f 53 63 61 6c  |(n%,x%))*.X_Scal|
00001540  65 3c 31 0d 00 e9 38 63  6c 6f 73 65 64 25 3d 63  |e<1...8closed%=c|
00001550  6c 6f 73 65 64 25 20 80  20 94 28 64 61 74 61 28  |losed% . .(data(|
00001560  30 2c 79 25 29 3d 64 61  74 61 28 6e 25 2c 79 25  |0,y%)=data(n%,y%|
00001570  29 29 3c a4 45 70 73 69  6c 6f 6e 0d 00 ea 1d e7  |))<.Epsilon.....|
00001580  20 63 6c 6f 73 65 64 25  8c 20 f2 43 6c 6f 73 65  | closed%. .Close|
00001590  57 69 74 68 4c 69 6e 65  0d 00 eb 05 e1 0d 00 ec  |WithLine........|
000015a0  04 0d 00 ed 04 0d 00 ee  20 f4 20 3d 3d 3d 3d 3d  |........ . =====|
000015b0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
000015c0  3d 3d 3d 3d 3d 0d 00 ef  14 f4 20 47 72 61 70 68  |=====..... Graph|
000015d0  73 20 6f 66 20 64 61 74  61 0d 00 f0 20 f4 20 3d  |s of data... . =|
000015e0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
000015f0  3d 3d 3d 3d 3d 3d 3d 3d  3d 0d 00 f1 04 0d 00 f2  |=========.......|
00001600  1e dd 20 a4 47 72 61 70  68 50 6c 6f 74 28 64 61  |.. .GraphPlot(da|
00001610  74 61 28 29 2c 78 25 2c  79 25 29 0d 00 f3 0b ea  |ta(),x%,y%).....|
00001620  20 5f 70 61 74 68 0d 00  f4 16 20 f2 50 61 74 68  | _path.... .Path|
00001630  42 65 67 69 6e 28 5f 70  61 74 68 29 0d 00 f5 20  |Begin(_path)... |
00001640  20 f2 40 47 72 61 70 68  50 6c 6f 74 28 64 61 74  | .@GraphPlot(dat|
00001650  61 28 29 2c 94 78 25 2c  94 79 25 29 0d 00 f6 0d  |a(),.x%,.y%)....|
00001660  20 f2 50 61 74 68 45 6e  64 0d 00 f7 0a 3d 5f 70  | .PathEnd....=_p|
00001670  61 74 68 0d 00 f8 04 0d  00 f9 1e dd 20 f2 47 72  |ath......... .Gr|
00001680  61 70 68 50 6c 6f 74 28  64 61 74 61 28 29 2c 78  |aphPlot(data(),x|
00001690  25 2c 79 25 29 0d 00 fa  0b ea 20 5f 70 61 74 68  |%,y%)..... _path|
000016a0  0d 00 fb 0b c8 8e 20 79  25 20 ca 0d 00 fc 09 20  |...... y% ..... |
000016b0  c9 20 b9 20 0d 00 fd 1b  20 20 e3 20 5f 79 25 3d  |. . ....  . _y%=|
000016c0  31 20 b8 20 de 28 64 61  74 61 28 29 2c 32 29 0d  |1 . .(data(),2).|
000016d0  00 fe 32 20 20 20 e7 20  78 25 3c 3e 5f 79 25 20  |..2   . x%<>_y% |
000016e0  8c 20 5f 70 61 74 68 3d  a4 47 72 61 70 68 50 6c  |. _path=.GraphPl|
000016f0  6f 74 28 64 61 74 61 28  29 2c 78 25 2c 5f 79 25  |ot(data(),x%,_y%|
00001700  29 0d 00 ff 09 20 20 20  ed 20 0d 01 00 06 20 7f  |)....   . .... .|
00001710  0d 01 01 25 20 5f 70 61  74 68 3d a4 47 72 61 70  |...% _path=.Grap|
00001720  68 50 6c 6f 74 28 64 61  74 61 28 29 2c 78 25 2c  |hPlot(data(),x%,|
00001730  79 25 29 20 20 0d 01 02  05 cb 0d 01 03 05 e1 0d  |y%)  ...........|
00001740  01 04 04 0d 01 05 1f dd  20 f2 40 47 72 61 70 68  |........ .@Graph|
00001750  50 6c 6f 74 28 64 61 74  61 28 29 2c 78 25 2c 79  |Plot(data(),x%,y|
00001760  25 29 0d 01 06 25 ea 20  5f 69 25 2c 5f 78 2c 5f  |%)...%. _i%,_x,_|
00001770  79 2c 5f 58 2c 5f 59 2c  5f 4d 78 2c 5f 4d 79 2c  |y,_X,_Y,_Mx,_My,|
00001780  5f 6d 78 2c 5f 6d 79 0d  01 07 19 e3 20 5f 69 25  |_mx,_my..... _i%|
00001790  3d 31 20 b8 20 de 28 64  61 74 61 28 29 2c 31 29  |=1 . .(data(),1)|
000017a0  0d 01 08 26 20 5f 78 3d  64 61 74 61 28 5f 69 25  |...& _x=data(_i%|
000017b0  2c 78 25 29 20 3a 20 5f  79 3d 64 61 74 61 28 5f  |,x%) : _y=data(_|
000017c0  69 25 2c 79 25 29 0d 01  09 0e 20 e7 20 5f 69 25  |i%,y%).... . _i%|
000017d0  3d 31 20 8c 0d 01 0a 12  20 20 f2 4d 6f 76 65 28  |=1 .....  .Move(|
000017e0  5f 78 2c 5f 79 29 0d 01  0b 39 20 20 f2 53 6c 6f  |_x,_y)...9  .Slo|
000017f0  70 65 28 64 61 74 61 28  29 2c 78 25 2c 79 25 2c  |pe(data(),x%,y%,|
00001800  5f 69 25 2c 5f 6d 78 2c  5f 6d 79 2c 32 29 20 3a  |_i%,_mx,_my,2) :|
00001810  20 20 5f 58 3d 5f 78 20  3a 20 5f 59 3d 5f 79 0d  |  _X=_x : _Y=_y.|
00001820  01 0c 06 20 cc 0d 01 0d  17 20 20 5f 4d 78 3d 5f  |... .....  _Mx=_|
00001830  6d 78 20 3a 20 5f 4d 79  3d 5f 6d 79 0d 01 0e 28  |mx : _My=_my...(|
00001840  20 20 f2 53 6c 6f 70 65  28 64 61 74 61 28 29 2c  |  .Slope(data(),|
00001850  78 25 2c 79 25 2c 5f 69  25 2c 5f 6d 78 2c 5f 6d  |x%,y%,_i%,_mx,_m|
00001860  79 2c 32 29 0d 01 0f 38  20 20 f2 42 65 7a 69 65  |y,2)...8  .Bezie|
00001870  72 28 5f 58 2b 5f 4d 78  2f 33 2c 5f 59 2b 5f 4d  |r(_X+_Mx/3,_Y+_M|
00001880  79 2f 33 2c 5f 78 2d 5f  6d 78 2f 33 2c 5f 79 2d  |y/3,_x-_mx/3,_y-|
00001890  5f 6d 79 2f 33 2c 5f 78  2c 5f 79 29 0d 01 10 13  |_my/3,_x,_y)....|
000018a0  20 20 5f 58 3d 5f 78 20  3a 20 5f 59 3d 5f 79 0d  |  _X=_x : _Y=_y.|
000018b0  01 11 06 20 cd 0d 01 12  06 20 ed 0d 01 13 1d 20  |... ..... ..... |
000018c0  f2 43 6c 6f 73 65 50 6c  6f 74 28 64 61 74 61 28  |.ClosePlot(data(|
000018d0  29 2c 78 25 2c 79 25 29  0d 01 14 05 e1 0d 01 15  |),x%,y%)........|
000018e0  04 0d 01 16 2d dd 20 f2  53 6c 6f 70 65 28 64 61  |....-. .Slope(da|
000018f0  74 61 28 29 2c 78 25 2c  79 25 2c 69 25 2c f8 20  |ta(),x%,y%,i%,. |
00001900  6d 78 2c f8 20 6d 79 2c  74 79 70 65 25 29 0d 01  |mx,. my,type%)..|
00001910  17 35 ea 20 6e 25 2c 64  78 2c 64 79 2c 44 78 2c  |.5. n%,dx,dy,Dx,|
00001920  6a 25 2c 6b 25 2c 68 2c  48 2c 63 6c 6f 73 65 64  |j%,k%,h,H,closed|
00001930  25 20 20 3a 20 6e 25 3d  de 28 64 61 74 61 28 29  |%  : n%=.(data()|
00001940  2c 31 29 0d 01 18 32 63  6c 6f 73 65 64 25 3d 28  |,1)...2closed%=(|
00001950  94 28 64 61 74 61 28 30  2c 78 25 29 2d 64 61 74  |.(data(0,x%)-dat|
00001960  61 28 6e 25 2c 78 25 29  29 2a a4 58 5f 53 63 61  |a(n%,x%))*.X_Sca|
00001970  6c 65 29 3c 31 0d 01 19  3c 63 6c 6f 73 65 64 25  |le)<1...<closed%|
00001980  3d 63 6c 6f 73 65 64 25  20 80 20 28 94 28 64 61  |=closed% . (.(da|
00001990  74 61 28 30 2c 79 25 29  3d 64 61 74 61 28 6e 25  |ta(0,y%)=data(n%|
000019a0  2c 79 25 29 29 2a a4 59  5f 53 63 61 6c 65 29 3c  |,y%))*.Y_Scale)<|
000019b0  31 0d 01 1a 0b c8 8e 20  69 25 20 ca 0d 01 1b 08  |1...... i% .....|
000019c0  20 c9 20 31 0d 01 1c 39  20 20 44 78 3d 64 61 74  | . 1...9  Dx=dat|
000019d0  61 28 32 2c 78 25 29 2d  64 61 74 61 28 31 2c 78  |a(2,x%)-data(1,x|
000019e0  25 29 20 3a 20 44 79 3d  64 61 74 61 28 32 2c 79  |%) : Dy=data(2,y|
000019f0  25 29 2d 64 61 74 61 28  31 2c 79 25 29 0d 01 1d  |%)-data(1,y%)...|
00001a00  11 20 20 e7 20 63 6c 6f  73 65 64 25 20 8c 0d 01  |.  . closed% ...|
00001a10  1e 40 20 20 20 64 78 3d  64 61 74 61 28 31 2c 78  |.@   dx=data(1,x|
00001a20  25 29 2d 64 61 74 61 28  6e 25 2d 31 2c 78 25 29  |%)-data(n%-1,x%)|
00001a30  20 3a 20 64 79 3d 64 61  74 61 28 31 2c 79 25 29  | : dy=data(1,y%)|
00001a40  2d 64 61 74 61 28 6e 25  2d 31 2c 79 25 29 0d 01  |-data(n%-1,y%)..|
00001a50  1f 07 20 20 cc 0d 01 20  13 20 20 64 78 3d 44 78  |..  ... .  dx=Dx|
00001a60  20 3a 20 64 79 3d 44 79  0d 01 21 07 20 20 cd 0d  | : dy=Dy..!.  ..|
00001a70  01 22 09 20 c9 20 6e 25  0d 01 23 41 20 20 64 78  |.". . n%..#A  dx|
00001a80  3d 64 61 74 61 28 6e 25  2c 78 25 29 2d 64 61 74  |=data(n%,x%)-dat|
00001a90  61 28 6e 25 2d 31 2c 78  25 29 20 3a 20 64 79 3d  |a(n%-1,x%) : dy=|
00001aa0  64 61 74 61 28 6e 25 2c  79 25 29 2d 64 61 74 61  |data(n%,y%)-data|
00001ab0  28 6e 25 2d 31 2c 79 25  29 0d 01 24 11 20 20 e7  |(n%-1,y%)..$.  .|
00001ac0  20 63 6c 6f 73 65 64 25  20 8c 0d 01 25 3c 20 20  | closed% ...%<  |
00001ad0  20 44 78 3d 64 61 74 61  28 31 2c 78 25 29 2d 64  | Dx=data(1,x%)-d|
00001ae0  61 74 61 28 6e 25 2c 78  25 29 20 3a 20 44 79 3d  |ata(n%,x%) : Dy=|
00001af0  64 61 74 61 28 31 2c 79  25 29 2d 64 61 74 61 28  |data(1,y%)-data(|
00001b00  6e 25 2c 79 25 29 0d 01  26 07 20 20 cc 0d 01 27  |n%,y%)..&.  ...'|
00001b10  14 20 20 20 44 78 3d 64  78 20 3a 20 44 79 3d 64  |.   Dx=dx : Dy=d|
00001b20  79 0d 01 28 07 20 20 cd  0d 01 29 06 20 7f 0d 01  |y..(.  ...). ...|
00001b30  2a 41 20 20 44 78 3d 64  61 74 61 28 69 25 2b 31  |*A  Dx=data(i%+1|
00001b40  2c 78 25 29 2d 64 61 74  61 28 69 25 2c 78 25 29  |,x%)-data(i%,x%)|
00001b50  20 3a 20 44 79 3d 64 61  74 61 28 69 25 2b 31 2c  | : Dy=data(i%+1,|
00001b60  79 25 29 2d 64 61 74 61  28 69 25 2c 79 25 29 0d  |y%)-data(i%,y%).|
00001b70  01 2b 41 20 20 64 78 3d  64 61 74 61 28 69 25 2c  |.+A  dx=data(i%,|
00001b80  78 25 29 2d 64 61 74 61  28 69 25 2d 31 2c 78 25  |x%)-data(i%-1,x%|
00001b90  29 20 3a 20 64 79 3d 64  61 74 61 28 69 25 2c 79  |) : dy=data(i%,y|
00001ba0  25 29 2d 64 61 74 61 28  69 25 2d 31 2c 79 25 29  |%)-data(i%-1,y%)|
00001bb0  0d 01 2c 05 cb 0d 01 2d  0e c8 8e 20 74 79 70 65  |..,....-... type|
00001bc0  25 20 ca 0d 01 2e 07 c9  20 32 0d 01 2f 2a 20 e7  |% ...... 2../* .|
00001bd0  20 64 78 2a 44 78 3e 30  20 8c 20 6d 78 3d 32 2a  | dx*Dx>0 . mx=2*|
00001be0  64 78 2a 44 78 2f 28 64  78 2b 44 78 29 20 8b 20  |dx*Dx/(dx+Dx) . |
00001bf0  6d 78 3d 30 0d 01 30 2a  20 e7 20 64 79 2a 44 79  |mx=0..0* . dy*Dy|
00001c00  3e 30 20 8c 20 6d 79 3d  32 2a 64 79 2a 44 79 2f  |>0 . my=2*dy*Dy/|
00001c10  28 64 79 2b 44 79 29 20  8b 20 6d 79 3d 30 0d 01  |(dy+Dy) . my=0..|
00001c20  31 07 c9 20 33 0d 01 32  28 20 68 3d b6 28 64 78  |1.. 3..2( h=.(dx|
00001c30  2a 64 78 2b 64 79 2a 64  79 29 20 3a 20 48 3d b6  |*dx+dy*dy) : H=.|
00001c40  28 44 78 2a 44 78 2b 44  79 2a 44 79 29 0d 01 33  |(Dx*Dx+Dy*Dy)..3|
00001c50  38 20 6d 78 3d 28 48 2a  64 78 2f 68 2b 68 2a 44  |8 mx=(H*dx/h+h*D|
00001c60  78 2f 48 29 2f 28 68 2b  48 29 20 3a 20 6d 79 3d  |x/H)/(h+H) : my=|
00001c70  28 48 2a 64 79 2f 68 2b  68 2a 44 79 2f 48 29 2f  |(H*dy/h+h*Dy/H)/|
00001c80  28 68 2b 48 29 0d 01 34  05 cb 0d 01 35 05 e1 0d  |(h+H)..4....5...|
00001c90  01 36 04 0d 01 37 20 f4  20 3d 3d 3d 3d 3d 3d 3d  |.6...7 . =======|
00001ca0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00001cb0  3d 3d 3d 0d 01 38 1a f4  20 20 47 72 61 70 68 73  |===..8..  Graphs|
00001cc0  20 6f 66 20 46 75 6e 63  74 69 6f 6e 73 0d 01 39  | of Functions..9|
00001cd0  20 f4 20 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  | . =============|
00001ce0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 0d 01 3a  |=============..:|
00001cf0  04 0d 01 3b 13 dd 20 f2  47 72 61 70 68 28 66 24  |...;.. .Graph(f$|
00001d00  2c 6e 25 29 0d 01 3c 17  ea 20 5f 70 61 74 68 2c  |,n%)..<.. _path,|
00001d10  5f 61 2c 5f 62 2c 5f 75  2c 5f 76 0d 01 3d 20 f2  |_a,_b,_u,_v..= .|
00001d20  47 65 74 46 72 61 6d 65  43 6f 6f 72 64 73 28 5f  |GetFrameCoords(_|
00001d30  61 2c 5f 62 2c 5f 75 2c  5f 76 29 0d 01 3e 15 f2  |a,_b,_u,_v)..>..|
00001d40  50 61 74 68 42 65 67 69  6e 28 5f 70 61 74 68 29  |PathBegin(_path)|
00001d50  0d 01 3f 18 f2 40 47 72  61 70 68 28 66 24 2c 5f  |..?..@Graph(f$,_|
00001d60  61 2c 5f 62 2c 6e 25 29  0d 01 40 0c f2 50 61 74  |a,_b,n%)..@..Pat|
00001d70  68 45 6e 64 0d 01 41 05  e1 0d 01 42 04 0d 01 43  |hEnd..A....B...C|
00001d80  17 dd 20 a4 47 72 61 70  68 28 66 24 2c 61 2c 62  |.. .Graph(f$,a,b|
00001d90  2c 6e 25 29 0d 01 44 0b  ea 20 5f 70 61 74 68 0d  |,n%)..D.. _path.|
00001da0  01 45 15 f2 50 61 74 68  42 65 67 69 6e 28 5f 70  |.E..PathBegin(_p|
00001db0  61 74 68 29 0d 01 46 16  f2 40 47 72 61 70 68 28  |ath)..F..@Graph(|
00001dc0  66 24 2c 61 2c 62 2c 6e  25 29 0d 01 47 0c f2 50  |f$,a,b,n%)..G..P|
00001dd0  61 74 68 45 6e 64 0d 01  48 0a 3d 5f 70 61 74 68  |athEnd..H.=_path|
00001de0  0d 01 49 04 0d 01 4a 18  dd 20 f2 40 47 72 61 70  |..I...J.. .@Grap|
00001df0  68 28 66 24 2c 61 2c 62  2c 6e 25 29 0d 01 4b 32  |h(f$,a,b,n%)..K2|
00001e00  ea 20 5f 65 70 73 2c 5f  68 5f 6d 69 6e 2c 5f 68  |. _eps,_h_min,_h|
00001e10  5f 6d 61 78 2c 78 2c 5f  68 2c 5f 79 2c 5f 58 2c  |_max,x,_h,_y,_X,|
00001e20  5f 59 2c 5f 75 6e 64 65  66 69 6e 65 64 25 0d 01  |_Y,_undefined%..|
00001e30  4c 11 5f 65 70 73 3d a4  45 70 73 69 6c 6f 6e 0d  |L._eps=.Epsilon.|
00001e40  01 4d 1f 5f 68 5f 6d 61  78 3d 28 62 2d 61 29 2f  |.M._h_max=(b-a)/|
00001e50  a4 4d 69 6e 4e 6f 6f 66  50 6f 69 6e 74 73 0d 01  |.MinNoofPoints..|
00001e60  4e 1f 5f 68 5f 6d 69 6e  3d 28 62 2d 61 29 2f a4  |N._h_min=(b-a)/.|
00001e70  4d 61 78 4e 6f 6f 66 50  6f 69 6e 74 73 0d 01 4f  |MaxNoofPoints..O|
00001e80  25 e7 20 6e 25 3c 3d 30  20 8c 20 5f 68 3d 5f 68  |%. n%<=0 . _h=_h|
00001e90  5f 6d 61 78 20 8b 20 5f  68 3d 28 62 2d 61 29 2f  |_max . _h=(b-a)/|
00001ea0  6e 25 0d 01 50 0a 78 3d  61 2d 5f 68 0d 01 51 07  |n%..P.x=a-_h..Q.|
00001eb0  ea 20 85 0d 01 52 09 ee  20 85 20 ea 0d 01 53 11  |. ...R.. . ...S.|
00001ec0  5f 75 6e 64 65 66 69 6e  65 64 25 3d b9 0d 01 54  |_undefined%=...T|
00001ed0  25 e7 20 6e 25 3c 3d 30  20 8c 20 5f 68 3d 5f 68  |%. n%<=0 . _h=_h|
00001ee0  5f 6d 61 78 20 8b 20 5f  68 3d 28 62 2d 61 29 2f  |_max . _h=(b-a)/|
00001ef0  6e 25 0d 01 55 15 e7 20  9f 3d 31 37 20 84 20 78  |n%..U.. .=17 . x|
00001f00  3e 3d 62 20 8c 20 e1 0d  01 56 05 f5 0d 01 57 18  |>=b . ...V....W.|
00001f10  20 78 2b 3d 5f 68 20 3a  20 e7 20 78 3e 62 20 8c  | x+=_h : . x>b .|
00001f20  20 78 3d 62 0d 01 58 0d  20 5f 79 3d a0 66 24 20  | x=b..X. _y=.f$ |
00001f30  20 0d 01 59 15 20 c8 8e  20 5f 75 6e 64 65 66 69  | ..Y. .. _undefi|
00001f40  6e 65 64 25 20 ca 0d 01  5a 09 20 20 c9 20 b9 0d  |ned% ...Z.  . ..|
00001f50  01 5b 13 20 20 20 5f 58  3d 78 20 3a 20 5f 59 3d  |.[.   _X=x : _Y=|
00001f60  5f 79 0d 01 5c 19 20 20  20 e7 20 a4 49 6e 46 72  |_y..\.   . .InFr|
00001f70  61 6d 65 28 78 2c 5f 79  29 20 8c 0d 01 5d 24 20  |ame(x,_y) ...]$ |
00001f80  20 20 20 20 f2 4d 6f 76  65 28 78 2c 5f 79 29 20  |    .Move(x,_y) |
00001f90  3a 20 5f 75 6e 64 65 66  69 6e 65 64 25 3d a3 0d  |: _undefined%=..|
00001fa0  01 5e 0a 20 20 20 20 20  cc 0d 01 5f 15 20 20 20  |.^.     ..._.   |
00001fb0  20 20 5f 58 3d 78 20 3a  20 5f 59 3d 5f 79 0d 01  |  _X=x : _Y=_y..|
00001fc0  60 0a 20 20 20 20 20 cd  0d 01 61 09 20 20 7f 20  |`.     ...a.  . |
00001fd0  3a 0d 01 62 2f 20 20 20  20 e7 20 6e 25 3c 3d 30  |:..b/    . n%<=0|
00001fe0  20 80 20 78 3c 62 20 8c  20 f2 44 72 61 77 5f 43  | . x<b . .Draw_C|
00001ff0  6f 6e 74 72 6f 6c 4c 69  6e 65 61 72 53 74 65 70  |ontrolLinearStep|
00002000  0d 01 63 1d 20 20 20 20  f2 44 72 61 77 43 6c 69  |..c.    .DrawCli|
00002010  70 28 5f 58 2c 5f 59 2c  78 2c 5f 79 29 0d 01 64  |p(_X,_Y,x,_y)..d|
00002020  06 20 cb 0d 01 65 0a fd  20 78 3e 3d 62 0d 01 66  |. ...e.. x>=b..f|
00002030  07 f7 20 85 0d 01 67 05  e1 0d 01 68 04 0d 01 69  |.. ...g....h...i|
00002040  1c dd 20 f2 44 72 61 77  43 6c 69 70 28 f8 20 58  |.. .DrawClip(. X|
00002050  2c f8 20 59 2c 78 2c 79  29 0d 01 6a 35 ea 20 5f  |,. Y,x,y)..j5. _|
00002060  63 31 25 2c 5f 63 32 25  2c 5f 64 25 2c 5f 64 78  |c1%,_c2%,_d%,_dx|
00002070  2c 5f 64 79 2c 5f 61 2c  5f 62 2c 5f 75 2c 5f 76  |,_dy,_a,_b,_u,_v|
00002080  2c 5f 78 73 2c 5f 79 73  2c 5f 58 2c 5f 59 0d 01  |,_xs,_ys,_X,_Y..|
00002090  6b 20 f2 47 65 74 46 72  61 6d 65 43 6f 6f 72 64  |k .GetFrameCoord|
000020a0  73 28 5f 61 2c 5f 62 2c  5f 75 2c 5f 76 29 0d 01  |s(_a,_b,_u,_v)..|
000020b0  6c 0f 5f 58 3d 58 20 3a  20 5f 59 3d 59 0d 01 6d  |l._X=X : _Y=Y..m|
000020c0  28 5f 63 31 25 3d a4 4f  75 74 73 69 64 65 46 72  |(_c1%=.OutsideFr|
000020d0  61 6d 65 28 5f 58 2c 5f  59 29 20 3a 20 5f 64 25  |ame(_X,_Y) : _d%|
000020e0  3d 5f 63 31 25 0d 01 6e  1b 5f 63 32 25 3d a4 4f  |=_c1%..n._c2%=.O|
000020f0  75 74 73 69 64 65 46 72  61 6d 65 28 78 2c 79 29  |utsideFrame(x,y)|
00002100  0d 01 6f 3e e7 20 28 28  5f 63 31 25 3d 31 29 84  |..o>. ((_c1%=1).|
00002110  28 5f 63 31 25 3d 32 29  29 20 80 28 28 5f 63 32  |(_c1%=2)) .((_c2|
00002120  25 3d 31 29 84 28 5f 63  32 25 3d 32 29 29 20 8c  |%=1).(_c2%=2)) .|
00002130  20 58 3d 78 20 3a 20 59  3d 79 3a 20 20 e1 0d 01  | X=x : Y=y:  ...|
00002140  70 11 5f 78 73 3d 78 20  3a 20 5f 79 73 3d 79 0d  |p._xs=x : _ys=y.|
00002150  01 71 10 c8 95 20 5f 63  31 25 84 5f 63 32 25 0d  |.q... _c1%._c2%.|
00002160  01 72 16 20 e7 20 28 5f  63 31 25 80 5f 63 32 25  |.r. . (_c1%._c2%|
00002170  29 20 8c 20 e1 0d 01 73  18 20 5f 64 78 3d 78 2d  |) . ...s. _dx=x-|
00002180  5f 58 20 3a 20 5f 64 79  3d 79 2d 5f 59 0d 01 74  |_X : _dy=y-_Y..t|
00002190  0d 20 e7 20 5f 63 31 25  20 8c 0d 01 75 0c 20 20  |. . _c1% ...u.  |
000021a0  c8 8e 20 b9 20 ca 0d 01  76 2c 20 20 20 c9 20 5f  |.. . ...v,   . _|
000021b0  58 3c 5f 61 20 3a 20 5f  59 2b 3d 5f 64 79 2a 28  |X<_a : _Y+=_dy*(|
000021c0  5f 61 2d 5f 58 29 2f 5f  64 78 20 3a 20 5f 58 3d  |_a-_X)/_dx : _X=|
000021d0  5f 61 0d 01 77 2c 20 20  20 c9 20 5f 58 3e 5f 62  |_a..w,   . _X>_b|
000021e0  20 3a 20 5f 59 2b 3d 5f  64 79 2a 28 5f 62 2d 5f  | : _Y+=_dy*(_b-_|
000021f0  58 29 2f 5f 64 78 20 3a  20 5f 58 3d 5f 62 0d 01  |X)/_dx : _X=_b..|
00002200  78 2c 20 20 20 c9 20 5f  59 3c 5f 75 20 3a 20 5f  |x,   . _Y<_u : _|
00002210  58 2b 3d 5f 64 78 2a 28  5f 75 2d 5f 59 29 2f 5f  |X+=_dx*(_u-_Y)/_|
00002220  64 79 20 3a 20 5f 59 3d  5f 75 0d 01 79 2c 20 20  |dy : _Y=_u..y,  |
00002230  20 c9 20 5f 59 3e 5f 76  20 3a 20 5f 58 2b 3d 5f  | . _Y>_v : _X+=_|
00002240  64 78 2a 28 5f 76 2d 5f  59 29 2f 5f 64 79 20 3a  |dx*(_v-_Y)/_dy :|
00002250  20 5f 59 3d 5f 76 0d 01  7a 07 20 20 cb 0d 01 7b  | _Y=_v..z.  ...{|
00002260  1f 20 20 5f 63 31 25 3d  a4 4f 75 74 73 69 64 65  |.  _c1%=.Outside|
00002270  46 72 61 6d 65 28 5f 58  2c 5f 59 29 0d 01 7c 06  |Frame(_X,_Y)..|.|
00002280  20 cc 0d 01 7d 0c 20 20  c8 8e 20 b9 20 ca 0d 01  | ...}.  .. . ...|
00002290  7e 28 20 20 20 c9 20 78  3c 5f 61 20 3a 20 79 2b  |~(   . x<_a : y+|
000022a0  3d 5f 64 79 2a 28 5f 61  2d 78 29 2f 5f 64 78 20  |=_dy*(_a-x)/_dx |
000022b0  3a 20 78 3d 5f 61 0d 01  7f 28 20 20 20 c9 20 78  |: x=_a...(   . x|
000022c0  3e 5f 62 20 3a 20 79 2b  3d 5f 64 79 2a 28 5f 62  |>_b : y+=_dy*(_b|
000022d0  2d 78 29 2f 5f 64 78 20  3a 20 78 3d 5f 62 0d 01  |-x)/_dx : x=_b..|
000022e0  80 28 20 20 20 c9 20 79  3c 5f 75 20 3a 20 78 2b  |.(   . y<_u : x+|
000022f0  3d 5f 64 78 2a 28 5f 75  2d 79 29 2f 5f 64 79 20  |=_dx*(_u-y)/_dy |
00002300  3a 20 79 3d 5f 75 0d 01  81 28 20 20 20 c9 20 79  |: y=_u...(   . y|
00002310  3e 5f 76 20 3a 20 78 2b  3d 5f 64 78 2a 28 5f 76  |>_v : x+=_dx*(_v|
00002320  2d 79 29 2f 5f 64 79 20  3a 20 79 3d 5f 76 0d 01  |-y)/_dy : y=_v..|
00002330  82 07 20 20 cb 0d 01 83  1d 20 20 5f 63 32 25 3d  |..  .....  _c2%=|
00002340  a4 4f 75 74 73 69 64 65  46 72 61 6d 65 28 78 2c  |.OutsideFrame(x,|
00002350  79 29 0d 01 84 06 20 cd  0d 01 85 06 ce 20 0d 01  |y).... ...... ..|
00002360  86 2a e7 20 5f 64 25 20  8c 20 f2 40 4c 69 6e 65  |.*. _d% . .@Line|
00002370  28 5f 58 2c 5f 59 2c 78  2c 79 29 20 8b 20 f2 44  |(_X,_Y,x,y) . .D|
00002380  72 61 77 28 78 2c 79 29  0d 01 87 11 58 3d 5f 78  |raw(x,y)....X=_x|
00002390  73 20 3a 20 59 3d 5f 79  73 0d 01 88 05 e1 0d 01  |s : Y=_ys.......|
000023a0  89 04 0d 01 8a 13 f4 20  3d 3d 3d 3d 3d 3d 3d 3d  |....... ========|
000023b0  3d 3d 3d 3d 3d 0d 01 8b  13 f4 20 20 50 6f 69 6e  |=====.....  Poin|
000023c0  74 20 47 72 61 70 68 73  0d 01 8c 13 f4 20 3d 3d  |t Graphs..... ==|
000023d0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 0d 01 8d 04 0d  |===========.....|
000023e0  01 8e 14 dd 20 f2 50 6f  69 6e 74 73 28 66 24 2c  |.... .Points(f$,|
000023f0  6e 25 29 0d 01 8f 17 ea  20 5f 70 61 74 68 2c 5f  |n%)..... _path,_|
00002400  61 2c 5f 62 2c 5f 75 2c  5f 76 0d 01 90 20 f2 47  |a,_b,_u,_v... .G|
00002410  65 74 46 72 61 6d 65 43  6f 6f 72 64 73 28 5f 61  |etFrameCoords(_a|
00002420  2c 5f 62 2c 5f 75 2c 5f  76 29 0d 01 91 15 f2 50  |,_b,_u,_v).....P|
00002430  61 74 68 42 65 67 69 6e  28 5f 70 61 74 68 29 0d  |athBegin(_path).|
00002440  01 92 19 f2 40 50 6f 69  6e 74 73 28 66 24 2c 5f  |....@Points(f$,_|
00002450  61 2c 5f 62 2c 6e 25 29  0d 01 93 0c f2 50 61 74  |a,_b,n%).....Pat|
00002460  68 45 6e 64 0d 01 94 05  e1 0d 01 95 04 0d 01 96  |hEnd............|
00002470  18 dd 20 a4 50 6f 69 6e  74 73 28 66 24 2c 61 2c  |.. .Points(f$,a,|
00002480  62 2c 6e 25 29 0d 01 97  0b ea 20 5f 70 61 74 68  |b,n%)..... _path|
00002490  0d 01 98 15 f2 50 61 74  68 42 65 67 69 6e 28 5f  |.....PathBegin(_|
000024a0  70 61 74 68 29 0d 01 99  17 f2 40 50 6f 69 6e 74  |path).....@Point|
000024b0  73 28 66 24 2c 61 2c 62  2c 6e 25 29 0d 01 9a 0c  |s(f$,a,b,n%)....|
000024c0  f2 50 61 74 68 45 6e 64  0d 01 9b 0a 3d 5f 70 61  |.PathEnd....=_pa|
000024d0  74 68 0d 01 9c 04 0d 01  9d 19 dd 20 f2 40 50 6f  |th......... .@Po|
000024e0  69 6e 74 73 28 66 24 2c  61 2c 62 2c 6e 25 29 0d  |ints(f$,a,b,n%).|
000024f0  01 9e 32 ea 20 5f 68 2c  78 2c 5f 79 2c 5f 68 5f  |..2. _h,x,_y,_h_|
00002500  6d 69 6e 2c 5f 68 5f 6d  61 78 2c 5f 75 6e 64 65  |min,_h_max,_unde|
00002510  66 69 6e 65 64 25 2c 5f  58 2c 5f 59 2c 5f 65 70  |fined%,_X,_Y,_ep|
00002520  73 0d 01 9f 11 5f 65 70  73 3d a4 45 70 73 69 6c  |s...._eps=.Epsil|
00002530  6f 6e 0d 01 a0 1f 5f 68  5f 6d 61 78 3d 28 62 2d  |on...._h_max=(b-|
00002540  61 29 2f a4 4d 69 6e 4e  6f 6f 66 50 6f 69 6e 74  |a)/.MinNoofPoint|
00002550  73 0d 01 a1 1f 5f 68 5f  6d 69 6e 3d 28 62 2d 61  |s...._h_min=(b-a|
00002560  29 2f a4 4d 61 78 4e 6f  6f 66 50 6f 69 6e 74 73  |)/.MaxNoofPoints|
00002570  0d 01 a2 25 e7 20 6e 25  3c 3d 30 20 8c 20 5f 68  |...%. n%<=0 . _h|
00002580  3d 5f 68 5f 6d 61 78 20  8b 20 5f 68 3d 28 62 2d  |=_h_max . _h=(b-|
00002590  61 29 2f 6e 25 0d 01 a3  0a 78 3d 61 2d 5f 68 0d  |a)/n%....x=a-_h.|
000025a0  01 a4 07 ea 20 85 0d 01  a5 09 ee 20 85 20 ea 0d  |.... ...... . ..|
000025b0  01 a6 11 5f 75 6e 64 65  66 69 6e 65 64 25 3d b9  |..._undefined%=.|
000025c0  0d 01 a7 25 e7 20 6e 25  3c 3d 30 20 8c 20 5f 68  |...%. n%<=0 . _h|
000025d0  3d 5f 68 5f 6d 61 78 20  8b 20 5f 68 3d 28 62 2d  |=_h_max . _h=(b-|
000025e0  61 29 2f 6e 25 0d 01 a8  15 e7 20 9f 3d 31 37 20  |a)/n%..... .=17 |
000025f0  84 20 78 3e 3d 62 20 8c  20 e1 0d 01 a9 05 f5 0d  |. x>=b . .......|
00002600  01 aa 18 20 78 2b 3d 5f  68 20 3a 20 e7 20 78 3e  |... x+=_h : . x>|
00002610  62 20 8c 20 78 3d 62 0d  01 ab 0c 20 5f 79 3d a0  |b . x=b.... _y=.|
00002620  66 24 20 0d 01 ac 17 20  e7 20 a4 49 6e 46 72 61  |f$ .... . .InFra|
00002630  6d 65 28 78 2c 5f 79 29  20 8c 0d 01 ad 16 20 20  |me(x,_y) .....  |
00002640  c8 8e 20 5f 75 6e 64 65  66 69 6e 65 64 25 20 ca  |.. _undefined% .|
00002650  0d 01 ae 1b 20 20 20 c9  20 b9 20 3a 20 5f 75 6e  |....   . . : _un|
00002660  64 65 66 69 6e 65 64 25  3d a3 20 0d 01 af 0a 20  |defined%=. .... |
00002670  20 20 7f 20 3a 0d 01 b0  2f 20 20 20 20 e7 20 6e  |  . :.../    . n|
00002680  25 3c 3d 30 20 80 20 78  3c 62 20 8c 20 f2 44 72  |%<=0 . x<b . .Dr|
00002690  61 77 5f 43 6f 6e 74 72  6f 6c 4c 69 6e 65 61 72  |aw_ControlLinear|
000026a0  53 74 65 70 0d 01 b1 07  20 20 cb 0d 01 b2 22 20  |Step....  ...." |
000026b0  20 f2 40 50 6f 69 6e 74  28 78 2c 5f 79 29 20 3a  | .@Point(x,_y) :|
000026c0  20 5f 58 3d 78 20 3a 20  5f 59 3d 5f 79 0d 01 b3  | _X=x : _Y=_y...|
000026d0  06 20 cd 0d 01 b4 0a fd  20 78 3e 3d 62 0d 01 b5  |. ...... x>=b...|
000026e0  07 f7 20 85 0d 01 b6 05  e1 0d 01 b7 04 0d 01 b8  |.. .............|
000026f0  1d dd 20 f2 44 72 61 77  5f 43 6f 6e 74 72 6f 6c  |.. .Draw_Control|
00002700  4c 69 6e 65 61 72 53 74  65 70 0d 01 b9 15 ea 20  |LinearStep..... |
00002710  5f 44 32 2c 5f 79 6d 2c  5f 78 78 2c 5f 79 79 0d  |_D2,_ym,_xx,_yy.|
00002720  01 ba 12 5f 78 78 3d 78  20 3a 20 5f 79 79 3d 5f  |..._xx=x : _yy=_|
00002730  79 0d 01 bb 2b 20 78 3d  28 5f 78 78 2b 5f 58 29  |y...+ x=(_xx+_X)|
00002740  2f 32 20 3a 20 5f 79 3d  a0 66 24 20 3a 20 5f 79  |/2 : _y=.f$ : _y|
00002750  6d 3d 28 5f 59 2b 5f 79  79 29 2f 32 0d 01 bc 13  |m=(_Y+_yy)/2....|
00002760  5f 44 32 3d 94 28 5f 79  2d 5f 79 6d 29 2f 34 0d  |_D2=.(_y-_ym)/4.|
00002770  01 bd 10 e7 20 5f 44 32  3c 5f 65 70 73 20 8c 0d  |.... _D2<_eps ..|
00002780  01 be 30 20 e7 20 5f 68  3c 3d 5f 68 5f 6d 61 78  |..0 . _h<=_h_max|
00002790  2f 32 20 f2 44 72 61 77  5f 44 6f 75 62 6c 65 53  |/2 .Draw_DoubleS|
000027a0  74 65 70 20 8b 20 5f 68  3d 5f 68 5f 6d 61 78 0d  |tep . _h=_h_max.|
000027b0  01 bf 05 cc 0d 01 c0 2f  20 e7 20 5f 68 3e 3d 32  |......./ . _h>=2|
000027c0  2a 5f 68 5f 6d 69 6e 20  f2 44 72 61 77 5f 48 61  |*_h_min .Draw_Ha|
000027d0  6c 76 65 53 74 65 70 20  8b 20 5f 68 3d 5f 68 5f  |lveStep . _h=_h_|
000027e0  6d 69 6e 0d 01 c1 06 cd  20 0d 01 c2 05 e1 0d 01  |min..... .......|
000027f0  c3 04 0d 01 c4 15 dd 20  f2 44 72 61 77 5f 48 61  |....... .Draw_Ha|
00002800  6c 76 65 53 74 65 70 0d  01 c5 05 f5 0d 01 c6 0c  |lveStep.........|
00002810  20 5f 68 3d 5f 68 2f 32  0d 01 c7 24 20 5f 78 78  | _h=_h/2...$ _xx|
00002820  3d 78 20 3a 20 5f 79 79  3d 5f 79 20 3a 20 5f 79  |=x : _yy=_y : _y|
00002830  6d 3d 28 5f 59 2b 5f 79  79 29 2f 32 0d 01 c8 1b  |m=(_Y+_yy)/2....|
00002840  20 20 78 3d 28 5f 78 78  2b 5f 58 29 2f 32 20 3a  |  x=(_xx+_X)/2 :|
00002850  20 5f 79 3d a0 66 24 0d  01 c9 14 20 5f 44 32 3d  | _y=.f$.... _D2=|
00002860  94 28 5f 79 2d 5f 79 6d  29 2f 34 0d 01 ca 1b fd  |.(_y-_ym)/4.....|
00002870  20 5f 44 32 3c 5f 65 70  73 20 84 20 5f 68 3c 3d  | _D2<_eps . _h<=|
00002880  5f 68 5f 6d 69 6e 0d 01  cb 1b e7 20 5f 68 3c 5f  |_h_min..... _h<_|
00002890  68 5f 6d 69 6e 20 8c 20  5f 68 3d 5f 68 5f 6d 69  |h_min . _h=_h_mi|
000028a0  6e 0d 01 cc 05 e1 0d 01  cd 04 0d 01 ce 16 dd 20  |n.............. |
000028b0  f2 44 72 61 77 5f 44 6f  75 62 6c 65 53 74 65 70  |.Draw_DoubleStep|
000028c0  0d 01 cf 05 f5 0d 01 d0  26 20 78 3d 5f 78 78 2b  |........& x=_xx+|
000028d0  5f 68 20 3a 20 5f 79 3d  a0 66 24 20 3a 20 5f 79  |_h : _y=.f$ : _y|
000028e0  6d 3d 28 5f 59 2b 5f 79  29 2f 32 0d 01 d1 14 5f  |m=(_Y+_y)/2...._|
000028f0  44 32 3d 94 28 5f 79 79  2d 5f 79 6d 29 2f 34 0d  |D2=.(_yy-_ym)/4.|
00002900  01 d2 1c 5f 68 3d 32 2a  5f 68 20 3a 20 5f 78 78  |..._h=2*_h : _xx|
00002910  3d 78 20 3a 20 5f 79 79  3d 5f 79 0d 01 d3 22 fd  |=x : _yy=_y...".|
00002920  20 5f 44 32 3e 5f 65 70  73 20 84 20 5f 68 3e 3d  | _D2>_eps . _h>=|
00002930  5f 68 5f 6d 61 78 20 84  20 78 3e 3d 62 0d 01 d4  |_h_max . x>=b...|
00002940  13 5f 68 3d 5f 68 2f 32  20 3a 20 78 2d 3d 5f 68  |._h=_h/2 : x-=_h|
00002950  0d 01 d5 0f e7 20 78 3e  62 20 8c 20 78 3d 62 0d  |..... x>b . x=b.|
00002960  01 d6 0a 5f 79 3d a0 66  24 0d 01 d7 05 e1 0d 01  |..._y=.f$.......|
00002970  d8 04 0d 01 d9 1e f4 20  3d 3d 3d 3d 3d 3d 3d 3d  |....... ========|
00002980  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |================|
00002990  0d 01 da 1d f4 20 50 69  65 63 65 2d 77 69 73 65  |..... Piece-wise|
000029a0  20 43 75 62 69 63 20 47  72 61 70 68 73 0d 01 db  | Cubic Graphs...|
000029b0  1d f4 20 3d 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 3d  |.. =============|
000029c0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 0d 01 dc 04 0d 01  |==========......|
000029d0  dd 16 dd 20 f2 46 75 6e  63 74 69 6f 6e 28 66 24  |... .Function(f$|
000029e0  2c 6e 25 29 0d 01 de 17  ea 20 5f 70 61 74 68 2c  |,n%)..... _path,|
000029f0  5f 61 2c 5f 62 2c 5f 75  2c 5f 76 0d 01 df 20 f2  |_a,_b,_u,_v... .|
00002a00  47 65 74 46 72 61 6d 65  43 6f 6f 72 64 73 28 5f  |GetFrameCoords(_|
00002a10  61 2c 5f 62 2c 5f 75 2c  5f 76 29 0d 01 e0 15 f2  |a,_b,_u,_v).....|
00002a20  50 61 74 68 42 65 67 69  6e 28 5f 70 61 74 68 29  |PathBegin(_path)|
00002a30  0d 01 e1 1b f2 40 46 75  6e 63 74 69 6f 6e 28 66  |.....@Function(f|
00002a40  24 2c 5f 61 2c 5f 62 2c  6e 25 29 0d 01 e2 0c f2  |$,_a,_b,n%).....|
00002a50  50 61 74 68 45 6e 64 0d  01 e3 05 e1 0d 01 e4 04  |PathEnd.........|
00002a60  0d 01 e5 1a dd 20 a4 46  75 6e 63 74 69 6f 6e 28  |..... .Function(|
00002a70  66 24 2c 61 2c 62 2c 6e  25 29 0d 01 e6 0b ea 20  |f$,a,b,n%)..... |
00002a80  5f 70 61 74 68 0d 01 e7  15 f2 50 61 74 68 42 65  |_path.....PathBe|
00002a90  67 69 6e 28 5f 70 61 74  68 29 0d 01 e8 19 f2 40  |gin(_path).....@|
00002aa0  46 75 6e 63 74 69 6f 6e  28 66 24 2c 61 2c 62 2c  |Function(f$,a,b,|
00002ab0  6e 25 29 0d 01 e9 0c f2  50 61 74 68 45 6e 64 0d  |n%).....PathEnd.|
00002ac0  01 ea 0a 3d 5f 70 61 74  68 0d 01 eb 04 0d 01 ec  |...=_path.......|
00002ad0  1b dd 20 f2 40 46 75 6e  63 74 69 6f 6e 28 66 24  |.. .@Function(f$|
00002ae0  2c 61 2c 62 2c 6e 25 29  0d 01 ed 32 ea 20 5f 65  |,a,b,n%)...2. _e|
00002af0  70 73 2c 5f 68 5f 6d 69  6e 2c 5f 68 5f 6d 61 78  |ps,_h_min,_h_max|
00002b00  2c 78 2c 5f 68 2c 5f 79  2c 5f 58 2c 5f 59 2c 5f  |,x,_h,_y,_X,_Y,_|
00002b10  75 6e 64 65 66 69 6e 65  64 25 0d 01 ee 11 5f 65  |undefined%...._e|
00002b20  70 73 3d a4 45 70 73 69  6c 6f 6e 0d 01 ef 1f 5f  |ps=.Epsilon...._|
00002b30  68 5f 6d 61 78 3d 28 62  2d 61 29 2f a4 4d 69 6e  |h_max=(b-a)/.Min|
00002b40  4e 6f 6f 66 50 6f 69 6e  74 73 0d 01 f0 1f 5f 68  |NoofPoints...._h|
00002b50  5f 6d 69 6e 3d 28 62 2d  61 29 2f a4 4d 61 78 4e  |_min=(b-a)/.MaxN|
00002b60  6f 6f 66 50 6f 69 6e 74  73 0d 01 f1 25 e7 20 6e  |oofPoints...%. n|
00002b70  25 3c 3d 30 20 8c 20 5f  68 3d 5f 68 5f 6d 61 78  |%<=0 . _h=_h_max|
00002b80  20 8b 20 5f 68 3d 28 62  2d 61 29 2f 6e 25 0d 01  | . _h=(b-a)/n%..|
00002b90  f2 0a 78 3d 61 2d 5f 68  0d 01 f3 07 ea 20 85 0d  |..x=a-_h..... ..|
00002ba0  01 f4 09 ee 20 85 20 ea  0d 01 f5 11 5f 75 6e 64  |.... . ....._und|
00002bb0  65 66 69 6e 65 64 25 3d  b9 0d 01 f6 25 e7 20 6e  |efined%=....%. n|
00002bc0  25 3c 3d 30 20 8c 20 5f  68 3d 5f 68 5f 6d 61 78  |%<=0 . _h=_h_max|
00002bd0  20 8b 20 5f 68 3d 28 62  2d 61 29 2f 6e 25 0d 01  | . _h=(b-a)/n%..|
00002be0  f7 15 e7 20 9f 3d 31 37  20 84 20 78 3e 3d 62 20  |... .=17 . x>=b |
00002bf0  8c 20 e1 0d 01 f8 05 f5  0d 01 f9 18 20 78 2b 3d  |. .......... x+=|
00002c00  5f 68 20 3a 20 e7 20 78  3e 62 20 8c 20 78 3d 62  |_h : . x>b . x=b|
00002c10  0d 01 fa 0b 20 5f 79 3d  a0 66 24 0d 01 fb 14 20  |.... _y=.f$.... |
00002c20  e7 20 5f 75 6e 64 65 66  69 6e 65 64 25 20 8c 0d  |. _undefined% ..|
00002c30  01 fc 13 20 20 5f 58 3d  78 20 3a 20 5f 59 3d 5f  |...  _X=x : _Y=_|
00002c40  79 20 0d 01 fd 35 20 20  e7 20 a4 49 6e 46 72 61  |y ...5  . .InFra|
00002c50  6d 65 28 78 2c 5f 79 29  20 8c 20 f2 4d 6f 76 65  |me(x,_y) . .Move|
00002c60  28 78 2c 5f 79 29 20 3a  20 5f 75 6e 64 65 66 69  |(x,_y) : _undefi|
00002c70  6e 65 64 25 3d a3 20 0d  01 fe 06 20 cc 0d 01 ff  |ned%=. .... ....|
00002c80  1f 20 20 f2 43 75 62 69  63 43 6c 69 70 28 5f 58  |.  .CubicClip(_X|
00002c90  2c 5f 59 2c 78 2c 5f 79  2c 5f 68 29 0d 02 00 06  |,_Y,x,_y,_h)....|
00002ca0  20 cd 0d 02 01 0a fd 20  78 3e 3d 62 0d 02 02 07  | ...... x>=b....|
00002cb0  f7 20 85 0d 02 03 05 e1  0d 02 04 04 0d 02 05 20  |. ............. |
00002cc0  dd 20 f2 43 75 62 69 63  43 6c 69 70 28 f8 20 58  |. .CubicClip(. X|
00002cd0  2c f8 20 59 2c 78 2c 79  2c 5f 68 29 0d 02 06 3d  |,. Y,x,y,_h)...=|
00002ce0  ea 20 5f 63 31 25 2c 5f  63 32 25 2c 5f 64 25 2c  |. _c1%,_c2%,_d%,|
00002cf0  5f 64 78 2c 5f 64 79 2c  5f 61 2c 5f 62 2c 5f 75  |_dx,_dy,_a,_b,_u|
00002d00  2c 5f 76 2c 5f 78 73 2c  5f 79 73 2c 5f 58 2c 5f  |,_v,_xs,_ys,_X,_|
00002d10  59 2c 5f 4d 79 2c 5f 6d  79 0d 02 07 20 f2 47 65  |Y,_My,_my... .Ge|
00002d20  74 46 72 61 6d 65 43 6f  6f 72 64 73 28 5f 61 2c  |tFrameCoords(_a,|
00002d30  5f 62 2c 5f 75 2c 5f 76  29 0d 02 08 11 5f 58 3d  |_b,_u,_v)...._X=|
00002d40  58 20 3a 20 5f 59 3d 59  20 20 0d 02 09 28 5f 63  |X : _Y=Y  ...(_c|
00002d50  31 25 3d a4 4f 75 74 73  69 64 65 46 72 61 6d 65  |1%=.OutsideFrame|
00002d60  28 5f 58 2c 5f 59 29 20  3a 20 5f 64 25 3d 5f 63  |(_X,_Y) : _d%=_c|
00002d70  31 25 0d 02 0a 1b 5f 63  32 25 3d a4 4f 75 74 73  |1%...._c2%=.Outs|
00002d80  69 64 65 46 72 61 6d 65  28 78 2c 79 29 0d 02 0b  |ideFrame(x,y)...|
00002d90  3e e7 20 28 28 5f 63 31  25 3d 31 29 84 28 5f 63  |>. ((_c1%=1).(_c|
00002da0  31 25 3d 32 29 29 20 80  28 28 5f 63 32 25 3d 31  |1%=2)) .((_c2%=1|
00002db0  29 84 28 5f 63 32 25 3d  32 29 29 20 8c 20 58 3d  |).(_c2%=2)) . X=|
00002dc0  78 20 3a 20 59 3d 79 3a  20 20 e1 0d 02 0c 11 5f  |x : Y=y:  ....._|
00002dd0  78 73 3d 78 20 3a 20 5f  79 73 3d 79 0d 02 0d 10  |xs=x : _ys=y....|
00002de0  c8 95 20 5f 63 31 25 84  5f 63 32 25 0d 02 0e 16  |.. _c1%._c2%....|
00002df0  20 e7 20 28 5f 63 31 25  80 5f 63 32 25 29 20 8c  | . (_c1%._c2%) .|
00002e00  20 e1 0d 02 0f 18 20 5f  64 78 3d 78 2d 5f 58 20  | ..... _dx=x-_X |
00002e10  3a 20 5f 64 79 3d 79 2d  5f 59 0d 02 10 0d 20 e7  |: _dy=y-_Y.... .|
00002e20  20 5f 63 31 25 20 8c 0d  02 11 0c 20 20 c8 8e 20  | _c1% .....  .. |
00002e30  b9 20 ca 0d 02 12 2c 20  20 20 c9 20 5f 58 3c 5f  |. ....,   . _X<_|
00002e40  61 20 3a 20 5f 59 2b 3d  5f 64 79 2a 28 5f 61 2d  |a : _Y+=_dy*(_a-|
00002e50  5f 58 29 2f 5f 64 78 20  3a 20 5f 58 3d 5f 61 0d  |_X)/_dx : _X=_a.|
00002e60  02 13 2c 20 20 20 c9 20  5f 58 3e 5f 62 20 3a 20  |..,   . _X>_b : |
00002e70  5f 59 2b 3d 5f 64 79 2a  28 5f 62 2d 5f 58 29 2f  |_Y+=_dy*(_b-_X)/|
00002e80  5f 64 78 20 3a 20 5f 58  3d 5f 62 0d 02 14 2c 20  |_dx : _X=_b..., |
00002e90  20 20 c9 20 5f 59 3c 5f  75 20 3a 20 5f 58 2b 3d  |  . _Y<_u : _X+=|
00002ea0  5f 64 78 2a 28 5f 75 2d  5f 59 29 2f 5f 64 79 20  |_dx*(_u-_Y)/_dy |
00002eb0  3a 20 5f 59 3d 5f 75 0d  02 15 2c 20 20 20 c9 20  |: _Y=_u...,   . |
00002ec0  5f 59 3e 5f 76 20 3a 20  5f 58 2b 3d 5f 64 78 2a  |_Y>_v : _X+=_dx*|
00002ed0  28 5f 76 2d 5f 59 29 2f  5f 64 79 20 3a 20 5f 59  |(_v-_Y)/_dy : _Y|
00002ee0  3d 5f 76 0d 02 16 07 20  20 cb 0d 02 17 1f 20 20  |=_v....  .....  |
00002ef0  5f 63 31 25 3d a4 4f 75  74 73 69 64 65 46 72 61  |_c1%=.OutsideFra|
00002f00  6d 65 28 5f 58 2c 5f 59  29 0d 02 18 06 20 cc 0d  |me(_X,_Y).... ..|
00002f10  02 19 0c 20 20 c8 8e 20  b9 20 ca 0d 02 1a 28 20  |...  .. . ....( |
00002f20  20 20 c9 20 78 3c 5f 61  20 3a 20 79 2b 3d 5f 64  |  . x<_a : y+=_d|
00002f30  79 2a 28 5f 61 2d 78 29  2f 5f 64 78 20 3a 20 78  |y*(_a-x)/_dx : x|
00002f40  3d 5f 61 0d 02 1b 28 20  20 20 c9 20 78 3e 5f 62  |=_a...(   . x>_b|
00002f50  20 3a 20 79 2b 3d 5f 64  79 2a 28 5f 62 2d 78 29  | : y+=_dy*(_b-x)|
00002f60  2f 5f 64 78 20 3a 20 78  3d 5f 62 0d 02 1c 28 20  |/_dx : x=_b...( |
00002f70  20 20 c9 20 79 3c 5f 75  20 3a 20 78 2b 3d 5f 64  |  . y<_u : x+=_d|
00002f80  78 2a 28 5f 75 2d 79 29  2f 5f 64 79 20 3a 20 79  |x*(_u-y)/_dy : y|
00002f90  3d 5f 75 0d 02 1d 28 20  20 20 c9 20 79 3e 5f 76  |=_u...(   . y>_v|
00002fa0  20 3a 20 78 2b 3d 5f 64  78 2a 28 5f 76 2d 79 29  | : x+=_dx*(_v-y)|
00002fb0  2f 5f 64 79 20 3a 20 79  3d 5f 76 0d 02 1e 07 20  |/_dy : y=_v.... |
00002fc0  20 cb 0d 02 1f 1d 20 20  5f 63 32 25 3d a4 4f 75  | .....  _c2%=.Ou|
00002fd0  74 73 69 64 65 46 72 61  6d 65 28 78 2c 79 29 0d  |tsideFrame(x,y).|
00002fe0  02 20 06 20 cd 0d 02 21  05 ce 0d 02 22 0b e7 20  |. . ...!....".. |
00002ff0  5f 64 25 20 8c 0d 02 23  17 20 20 f2 40 4c 69 6e  |_d% ...#.  .@Lin|
00003000  65 28 5f 58 2c 5f 59 2c  78 2c 79 29 0d 02 24 07  |e(_X,_Y,x,y)..$.|
00003010  20 20 cc 0d 02 25 42 20  20 20 5f 4d 79 3d a4 53  |  ...%B   _My=.S|
00003020  6c 6f 70 65 28 66 24 2c  5f 58 2c 5f 59 2c 5f 68  |lope(f$,_X,_Y,_h|
00003030  2c 61 2c 62 2c 32 29 20  3a 20 5f 6d 79 3d a4 53  |,a,b,2) : _my=.S|
00003040  6c 6f 70 65 28 66 24 2c  78 2c 79 2c 5f 68 2c 61  |lope(f$,x,y,_h,a|
00003050  2c 62 2c 32 29 0d 02 26  39 20 20 20 f2 42 65 7a  |,b,2)..&9   .Bez|
00003060  69 65 72 28 5f 58 2b 5f  68 2f 33 2c 5f 59 2b 5f  |ier(_X+_h/3,_Y+_|
00003070  68 2a 5f 4d 79 2f 33 2c  78 2d 5f 68 2f 33 2c 79  |h*_My/3,x-_h/3,y|
00003080  2d 5f 68 2a 5f 6d 79 2f  33 2c 78 2c 79 29 0d 02  |-_h*_my/3,x,y)..|
00003090  27 07 20 20 cd 0d 02 28  13 20 20 58 3d 5f 78 73  |'.  ...(.  X=_xs|
000030a0  20 3a 20 59 3d 5f 79 73  0d 02 29 05 e1 0d 02 2a  | : Y=_ys..)....*|
000030b0  04 0d 02 2b 20 dd 20 a4  53 6c 6f 70 65 28 66 24  |...+ . .Slope(f$|
000030c0  2c 58 2c 59 2c 68 2c 61  2c 62 2c 74 79 70 65 25  |,X,Y,h,a,b,type%|
000030d0  29 0d 02 2c 16 ea 20 5f  64 79 2c 5f 44 79 2c 78  |)..,.. _dy,_Dy,x|
000030e0  2c 5f 79 2c 5f 6d 79 0d  02 2d 28 e7 20 58 3c 3e  |,_y,_my..-(. X<>|
000030f0  61 20 8c 20 78 3d 58 2d  68 20 3a 20 5f 79 3d a0  |a . x=X-h : _y=.|
00003100  66 24 20 3a 20 5f 64 79  3d 28 59 2d 5f 79 29 0d  |f$ : _dy=(Y-_y).|
00003110  02 2e 28 e7 20 58 3c 3e  62 20 8c 20 78 3d 58 2b  |..(. X<>b . x=X+|
00003120  68 20 3a 20 5f 79 3d a0  66 24 20 3a 20 5f 44 79  |h : _y=.f$ : _Dy|
00003130  3d 28 5f 79 2d 59 29 0d  02 2f 13 e7 20 58 3d 61  |=(_y-Y)../.. X=a|
00003140  20 8c 20 5f 64 79 3d 5f  44 79 0d 02 30 13 e7 20  | . _dy=_Dy..0.. |
00003150  58 3d 62 20 8c 20 5f 44  79 3d 5f 64 79 0d 02 31  |X=b . _Dy=_dy..1|
00003160  0e c8 8e 20 74 79 70 65  25 20 ca 0d 02 32 1c c9  |... type% ...2..|
00003170  20 32 20 20 3a 20 5f 6d  79 3d 28 5f 64 79 2b 5f  | 2  : _my=(_dy+_|
00003180  44 79 29 2f 32 2f 68 0d  02 33 07 c9 20 33 0d 02  |Dy)/2/h..3.. 3..|
00003190  34 32 20 e7 20 5f 64 79  2a 5f 44 79 3e 30 20 8c  |42 . _dy*_Dy>0 .|
000031a0  20 5f 6d 79 3d 32 2a 5f  64 79 2a 5f 44 79 2f 28  | _my=2*_dy*_Dy/(|
000031b0  5f 64 79 2b 5f 44 79 29  20 8b 20 5f 6d 79 3d 30  |_dy+_Dy) . _my=0|
000031c0  0d 02 35 05 cb 0d 02 36  08 3d 5f 6d 79 0d 02 37  |..5....6.=_my..7|
000031d0  04 0d 02 38 11 f4 20 3d  3d 3d 3d 3d 3d 3d 3d 3d  |...8.. =========|
000031e0  3d 3d 0d 02 39 0c f4 20  43 75 72 76 65 73 0d 02  |==..9.. Curves..|
000031f0  3a 11 f4 20 3d 3d 3d 3d  3d 3d 3d 3d 3d 3d 3d 0d  |:.. ===========.|
00003200  02 3b 04 0d 02 3c 1a dd  20 f2 43 75 72 76 65 28  |.;...<.. .Curve(|
00003210  78 24 2c 79 24 2c 41 2c  42 2c 6e 25 29 0d 02 3d  |x$,y$,A,B,n%)..=|
00003220  13 ea 20 5f 70 61 74 68  2c 61 2c 62 2c 75 2c 76  |.. _path,a,b,u,v|
00003230  0d 02 3e 15 f2 50 61 74  68 42 65 67 69 6e 28 5f  |..>..PathBegin(_|
00003240  70 61 74 68 29 0d 02 3f  19 f2 40 43 75 72 76 65  |path)..?..@Curve|
00003250  28 78 24 2c 79 24 2c 41  2c 42 2c 6e 25 29 0d 02  |(x$,y$,A,B,n%)..|
00003260  40 0c f2 50 61 74 68 45  6e 64 0d 02 41 05 e1 0d  |@..PathEnd..A...|
00003270  02 42 04 0d 02 43 1a dd  20 a4 43 75 72 76 65 28  |.B...C.. .Curve(|
00003280  78 24 2c 79 24 2c 41 2c  42 2c 6e 25 29 0d 02 44  |x$,y$,A,B,n%)..D|
00003290  0b ea 20 5f 70 61 74 68  0d 02 45 15 f2 50 61 74  |.. _path..E..Pat|
000032a0  68 42 65 67 69 6e 28 5f  70 61 74 68 29 0d 02 46  |hBegin(_path)..F|
000032b0  19 f2 40 43 75 72 76 65  28 78 24 2c 79 24 2c 41  |..@Curve(x$,y$,A|
000032c0  2c 42 2c 6e 25 29 0d 02  47 0c f2 50 61 74 68 45  |,B,n%)..G..PathE|
000032d0  6e 64 0d 02 48 0a 3d 5f  70 61 74 68 0d 02 49 04  |nd..H.=_path..I.|
000032e0  0d 02 4a 1b dd 20 f2 40  43 75 72 76 65 28 78 24  |..J.. .@Curve(x$|
000032f0  2c 79 24 2c 61 2c 62 2c  6e 25 29 0d 02 4b 24 ea  |,y$,a,b,n%)..K$.|
00003300  20 68 2c 74 2c 78 2c 79  2c 68 5f 6d 69 6e 2c 68  | h,t,x,y,h_min,h|
00003310  5f 6d 61 78 2c 75 6e 64  65 66 69 6e 65 64 25 0d  |_max,undefined%.|
00003320  02 4c 1e 68 5f 6d 69 6e  3d 28 62 2d 61 29 2f a4  |.L.h_min=(b-a)/.|
00003330  4d 69 6e 4e 6f 6f 66 50  6f 69 6e 74 73 0d 02 4d  |MinNoofPoints..M|
00003340  1e 68 5f 6d 61 78 3d 28  62 2d 61 29 2f a4 4d 61  |.h_max=(b-a)/.Ma|
00003350  78 4e 6f 6f 66 50 6f 69  6e 74 73 0d 02 4e 22 e7  |xNoofPoints..N".|
00003360  20 6e 25 3c 3d 30 20 8c  20 68 3d 68 5f 6d 61 78  | n%<=0 . h=h_max|
00003370  20 8b 20 68 3d 28 62 2d  61 29 2f 6e 25 0d 02 4f  | . h=(b-a)/n%..O|
00003380  09 74 3d 61 2d 68 0d 02  50 07 ea 20 85 0d 02 51  |.t=a-h..P.. ...Q|
00003390  09 ee 20 85 20 ea 0d 02  52 10 75 6e 64 65 66 69  |.. . ...R.undefi|
000033a0  6e 65 64 25 3d b9 0d 02  53 22 e7 20 6e 25 3c 3d  |ned%=...S". n%<=|
000033b0  30 20 8c 20 68 3d 68 5f  6d 61 78 20 8b 20 68 3d  |0 . h=h_max . h=|
000033c0  28 62 2d 61 29 2f 6e 25  0d 02 54 15 e7 20 9f 3d  |(b-a)/n%..T.. .=|
000033d0  31 37 20 84 20 74 3e 3d  62 20 8c 20 e1 0d 02 55  |17 . t>=b . ...U|
000033e0  05 f5 0d 02 56 09 20 74  2b 3d 68 0d 02 57 10 20  |....V. t+=h..W. |
000033f0  e7 20 74 3e 62 20 8c 20  74 3d 62 0d 02 58 12 20  |. t>b . t=b..X. |
00003400  78 3d a0 78 24 20 3a 20  79 3d a0 79 24 0d 02 59  |x=.x$ : y=.y$..Y|
00003410  14 20 c8 8e 20 75 6e 64  65 66 69 6e 65 64 25 20  |. .. undefined% |
00003420  ca 0d 02 5a 25 20 20 c9  20 b9 20 3a 20 f2 4d 6f  |...Z%  . . : .Mo|
00003430  76 65 28 78 2c 79 29 20  3a 20 75 6e 64 65 66 69  |ve(x,y) : undefi|
00003440  6e 65 64 25 3d a3 0d 02  5b 14 20 20 7f 20 3a 20  |ned%=...[.  . : |
00003450  f2 44 72 61 77 28 78 2c  79 29 0d 02 5c 06 20 cb  |.Draw(x,y)..\. .|
00003460  0d 02 5d 0a fd 20 74 3e  3d 62 0d 02 5e 07 f7 20  |..].. t>=b..^.. |
00003470  85 0d 02 5f 05 e1 0d 02  60 04 0d 02 61 04 0d 02  |..._....`...a...|
00003480  62 14 f4 20 52 45 4d 20  3d 3d 3d 3d 3d 3d 3d 3d  |b.. REM ========|
00003490  3d 3d 0d 02 63 14 f4 20  52 45 4d 20 50 61 72 61  |==..c.. REM Para|
000034a0  6d 65 74 65 72 73 0d 02  64 14 f4 20 52 45 4d 20  |meters..d.. REM |
000034b0  3d 3d 3d 3d 3d 3d 3d 3d  3d 3d 0d 02 65 04 0d 02  |==========..e...|
000034c0  66 1d dd 20 a4 4d 61 78  4e 6f 6f 66 50 6f 69 6e  |f.. .MaxNoofPoin|
000034d0  74 73 3d 21 28 93 2b 32  30 38 29 0d 02 67 1d dd  |ts=!(.+208)..g..|
000034e0  20 a4 4d 69 6e 4e 6f 6f  66 50 6f 69 6e 74 73 3d  | .MinNoofPoints=|
000034f0  21 28 93 2b 32 31 32 29  0d 02 68 04 0d 02 69 1b  |!(.+212)..h...i.|
00003500  dd 20 a4 44 6f 74 73 50  65 72 49 6e 63 68 3d 21  |. .DotsPerInch=!|
00003510  28 93 2b 32 31 36 29 0d  02 6a 05 20 0d 02 6b 1c  |(.+216)..j. ..k.|
00003520  dd 20 f2 52 65 73 6f 6c  75 74 69 6f 6e 28 6d 61  |. .Resolution(ma|
00003530  78 25 2c 6d 69 6e 25 29  0d 02 6c 11 21 28 93 2b  |x%,min%)..l.!(.+|
00003540  32 30 38 29 3d 6d 61 78  25 0d 02 6d 11 21 28 93  |208)=max%..m.!(.|
00003550  2b 32 31 32 29 3d 6d 69  6e 25 0d 02 6e 05 e1 0d  |+212)=min%..n...|
00003560  02 6f 04 0d 02 70 16 dd  20 f2 41 63 63 75 72 61  |.o...p.. .Accura|
00003570  63 79 28 64 6f 74 73 25  29 0d 02 71 12 21 28 93  |cy(dots%)..q.!(.|
00003580  2b 32 31 36 29 3d 64 6f  74 73 25 0d 02 72 05 e1  |+216)=dots%..r..|
00003590  0d 02 73 04 0d 02 74 2a  dd 20 a4 42 61 72 53 63  |..s...t*. .BarSc|
000035a0  61 6c 65 73 4c 61 72 67  65 3d 28 28 21 28 93 2b  |alesLarge=((!(.+|
000035b0  32 32 30 29 29 3c 3c 31  36 29 3e 3e 31 36 0d 02  |220))<<16)>>16..|
000035c0  75 04 0d 02 76 24 dd 20  a4 42 61 72 53 63 61 6c  |u...v$. .BarScal|
000035d0  65 73 53 6d 61 6c 6c 3d  28 21 28 93 2b 32 32 30  |esSmall=(!(.+220|
000035e0  29 29 3e 3e 31 36 0d 02  77 04 0d 02 78 1b dd 20  |))>>16..w...x.. |
000035f0  f2 42 61 72 53 63 61 6c  65 73 28 44 69 76 25 2c  |.BarScales(Div%,|
00003600  53 75 62 25 29 0d 02 79  1c 21 28 93 2b 32 32 30  |Sub%)..y.!(.+220|
00003610  29 3d 44 69 76 25 2b 28  53 75 62 25 3c 3c 31 36  |)=Div%+(Sub%<<16|
00003620  29 0d 02 7a 05 e1 0d 02  7b 04 0d 02 7c 1a dd 20  |)..z....{...|.. |
00003630  a4 53 63 72 65 65 6e 53  69 7a 65 3d 7c 28 93 2b  |.ScreenSize=|(.+|
00003640  32 34 30 29 0d 02 7d 04  0d 02 7e 19 dd 20 f2 53  |240)..}...~.. .S|
00003650  63 72 65 65 6e 53 69 7a  65 28 66 61 63 74 6f 72  |creenSize(factor|
00003660  29 0d 02 7f 13 7c 28 93  2b 32 34 30 29 3d 66 61  |)....|(.+240)=fa|
00003670  63 74 6f 72 0d 02 80 05  e1 0d 02 81 04 0d 02 82  |ctor............|
00003680  04 0d ff                                          |...|
00003683