  % Title "Graph"
 '% Animated
  % ScaleUp
 '% PlaceCentral
 '% AnchorCentral

  uses glo2\GraphUtil

  sub main
  ========
  static sys   imgn,res,wi,ht
  cls 0,0,0

  pushstate 'FOR GRAPH SCALE
  '
  static MoveableObject gr
  if not gr.id
    gr.mode=0x111
    gr.snap=.1
    gr.set 100, 0, 5, -16, 0
  end if
  gr.act
  TouchZone
  'color 0,.8,.8,1
  linescale 20.0, 1.0,  .3, 5  'X AXIS
  glRotatef  90,0,1,0
  linescale 20.0, 1.0,  .3, 5  'Z AXIS
  glRotatef -90,0,1,0
  glRotatef  90,0,0,1
  linescale  10.0, 1.0, -.3, 5 'Y AXIS
  glRotatef -90,0,0,1
  '
  'GRIDS
  thickness 1
  color      0,.4,.4,1.
  glRotatef -90,1,0,0
  grid       1,20,20 'FLOOR GRID
  glRotatef  90,1,0,0
  '
  glRotatef  90,0,1,0
  grid       1,20,10 'SIDE GRID
  glRotatef -90,0,1,0
  '
  'X AXIS VALUES
  color .5,1
  pushstate
  move 0,-1.5
  numscale 0,0,10,0,  0,10,2,1,  3 'X NUMBERS
  glRotatef  90,0,1,0
  numscale 0,0,10,0,  0,10,2,1,  3 'Z NUMBERS
  glRotatef -90,0,1,0
  '
  popstate
  'Y AXIS VALUES
  color .99,.50
  pushstate
  move -3
  numscale 0,0,0,5,  0,500,3,0,  3 'Y NUMBERS
  popstate

  'PLOTS
    flat 'shading
    'DEMO SCATTER DATA
    sys   i
    float x,y,z,s
    seed=123456789
    for i=1 to 500
      'x=irnd(1,20) : y=irnd(1,10) : z=-irnd(1,20)
      x=arnd()*20 : y=arnd()*10 : z=-arnd()*20
      PushState
      scale arnd()
      color arnd(),arnd(),arnd()
      pointsize irnd(1,10)
      point x,y,z
      PopState
    next
    flat


  popstate 'WHOLE GRAPH
  '
  '
  'TITLE
  pushstate
  static MoveableObject title
  if not title.id
    title.mode=0x111
    title.snap=.1
    title.set 200, 0, 2, -3, 0
  end if
  title.act 
  TouchZone .5
  scale 2
  printl "3D Graphs"
  popstate
  end sub 'main

  EndScript