1234567891011121314151617181920212223242526272829303132 |
- #!/usr/bin/ruby
- #
- ## https://rosettacode.org/wiki/Plasma_effect
- #
- require('Imager')
- class Plasma(width=400, height=400) {
- has img = nil
- method init {
- img = %O|Imager|.new(xsize => width, ysize => height)
- }
- method generate {
- for y,x in (^height ~X ^width) {
- var hue = (4 + sin(x/19) + sin(y/9) + sin((x+y)/25) + sin(hypot(x, y)/8))
- img.setpixel(x => x, y => y, color => Hash(hsv => [360 * hue / 8, 1, 1]))
- }
- }
- method save_as(filename) {
- img.write(file => filename)
- }
- }
- var plasma = Plasma(256, 256)
- plasma.generate
- plasma.save_as('plasma.png')
|