Julia set

require('Imager')

var (w, h) = (640, 480)
var img = %s'Imager'.new(xsize => w, ysize => h, channels => 3)

var maxIter = 50
var c = Complex(-0.388, 0.613)

var color = %s'Imager::Color'.new('#000000')

for x,y in (^w ~X ^h) {
    var i = maxIter
    var z = Complex((x - w/2) / w * 3, (y - h/2) / h * 2)
    while (z.abs < 2 && --i) {
        z = (z*z + c)
    }
    color.set(hsv => [i / maxIter * 360, 1, i])
    img.setpixel(x => x, y => y, color => color)
}

img.write(file => "JuliaSet_sidef.png")

This version generates an ASCII representation:

var (w, h) = (141, 50)

var maxIter = 40
var c = Complex(-0.8, 0.156)

for y in ^h {
    for x in ^w {
        var i = maxIter
        var z = Complex(3 * (x - w/2) / w, 2 * (y - h/2) / h)
        while (z.abs < 2 && --i) {
            z = (z*z + c)
        }
        print (i > 0 ? ' ' : '#')
    }
    print "\n"
}

Output:

                                                                        ##                                                                   
                                                                      ##                                                                     
                                                                     #######                                                                 
                                                                      ########                                                               
                                                                        #   ##                                                               
                                                                 # ###  ##  #                                                                
                                                         #      #####   ####       ##     ##                                                 
                                                          #    ######         ##########   #                                                 
                                                               ########     ##########    #                                                  
                                                          ##   ###### ########################                       ###                     
                                                          ################ ################### ##             ## # ### #                     
                                                        #  #####################################             #  ###  ##                      
                          # #                           ############################# ###########          # ######    ###                   
                          #   #       ##                  ########################### #    ########       ################# #                
                          # #    ####                    #####################  ###             ####      #####################              
                        ###    ############             ######################  # #               ###     ################ ###     # # #     
                        ###  # #################         ######################                    ##      ########### #      ##  ######     
                      ###########################           ####################           ######  ##       ##########     ### #   ###   # ##
                     ################ ##      ######          #################           ######## ##       #  ######     ## ##   ####     ##
         #  #         ########### #             ####         #############   ####        ###  #######       ###########    ##    ######      
        ##########    ############                ##           #  ##########  #           ##                ############    ##########       
       ######    ##    ###########       #######  ###        ####   #############         ####             # ###########         #  #        
###     ####   ## ##     ######  #       ## ########           #################          ######      ## ################                    
 ## #   ###   # ###     ##########       ##  ######           ####################           ###########################                     
      ######  ##      # ###########      ##                    ######################         ################# #  ###                       
      # # #     ### ################     ###               # #  ######################             ############    ###                       
               #####################      ####             ###  #####################                    ####    # #                         
                 # #################       ########    # ###########################                  ##       #   #                         
                    ###    ###### #          ########### #############################                           # #                         
                       ##  ###  #             #####################################  #                                                       
                      # ### # ##             ## ################### ################                                                         
                      ###                       ######################## ######   ##                                                         
                                                   #    ##########     ########                                                              
                                                  #   ##########         ######    #                                                         
                                                  ##     ##       ####   #####      #                                                        
                                                                 #  ##  ### #                                                                
                                                                ##   #                                                                       
                                                                ########                                                                     
                                                                  #######                                                                    
                                                                      ##                                                                     
                                                                    ##

Last updated