26 lines
564 B
Plaintext
26 lines
564 B
Plaintext
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=(^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')
|