chaos_game.sf 671 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/ruby
  2. #
  3. ## https://rosettacode.org/wiki/Chaos_game
  4. #
  5. require('Imager')
  6. var width = 600
  7. var height = 600
  8. var points = [
  9. [width//2, 0],
  10. [ 0, height-1],
  11. [height-1, height-1],
  12. ]
  13. var img = %O<Imager>.new(
  14. xsize => width,
  15. ysize => height,
  16. )
  17. var color = %O<Imager::Color>.new('#ff0000')
  18. var r = [width.irand, height.irand]
  19. 30000.times {
  20. var p = points.rand
  21. r[] = (
  22. (p[0] + r[0]) // 2,
  23. (p[1] + r[1]) // 2,
  24. )
  25. img.setpixel(
  26. x => r[0],
  27. y => r[1],
  28. color => color,
  29. )
  30. }
  31. img.write(file => 'chaos_game.png')