home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / historic / v941.tgz / icon.v941src.tar / icon.v941src / ipl / gprogs / design1.icn < prev    next >
Text File  |  2000-07-29  |  2KB  |  71 lines

  1. ############################################################################
  2. #
  3. #    File:     design1.icn
  4. #
  5. #    Subject:  Program to draw spokes design
  6. #
  7. #    Author:   Ralph E. Griswold
  8. #
  9. #    Date:     February 17, 1995
  10. #
  11. ############################################################################
  12. #
  13. #   This file is in the public domain.
  14. #
  15. ############################################################################
  16. #
  17. #  This is just an example of an interesting graphic design.  It can
  18. #  easily be modified to produce other designs.
  19. #
  20. ############################################################################
  21. #
  22. #  Requires:  Version 9 graphics
  23. #
  24. ############################################################################
  25. #
  26. #  Links:  wopen
  27. #
  28. ############################################################################
  29.  
  30. link wopen
  31.  
  32. procedure main(argl)
  33.    local i, j, k, angle, incr, xpoint, ypoint, size, radius, xc, yc
  34.  
  35.    i := integer(argl[1]) | 20
  36.  
  37.    size := 300
  38.    radius := size / 4
  39.    xc := yc := size / 2
  40.  
  41.    WOpen("label=design", "width=" || size, "height=" || size) |
  42.       stop("*** cannot open window")
  43.  
  44.    angle := 0.0
  45.    incr := 2 * &pi / i
  46.  
  47.    every j := 1 to i do {
  48.       spokes(xc + radius * cos(angle), yc + radius * sin(angle),
  49.          radius, i, angle)
  50.       angle +:= incr
  51.       }
  52.  
  53.    Event()
  54.  
  55. end
  56.  
  57. procedure spokes(x, y, r, i, angle)
  58.    local incr, j
  59.  
  60.    incr := 2 * &pi / i 
  61.  
  62.    every j := 1 to i do {
  63.       DrawLine(x, y, x + r * cos(angle), y + r * sin(angle))
  64.       angle +:= incr
  65.       }
  66.  
  67.    return
  68.  
  69. end
  70.  
  71.