View in color | License | Download script | History | Other scripts by: koteth |
30-Apr 14:08 UTC
[0.061] 12.087k
[0.061] 12.087k
mandelb.rREBOL [
File: %mandelb.r
Date: 19-Jul-2009
Title: "Mandelbrot"
Purpose: "Mandelbrot"
Author: "Lami Gabriele"
Email: %koteth--gmail--com
]
x-siz: 400 y-siz: 400
im: to-image layout [ origin 0x0 box black to-pair x-siz y-siz]
bg-color: 200.200.210
make-col: func[ flo ][
ic: to-integer ( 10 * cosine ( erre * 100 ) )
ip: to-integer ( 10 * ( 1 - cosine ( erre * 100 ) ) )
0.200.0 * ic + ip * 0.0.200 + 120.0.0
]
clear-im: func [im [image!] color [tuple!]][ repeat j im/size/x * im/size/y [poke im j color] ]
set-pixel: func [ im [image!] x [integer!] y [integer!] color [tuple!] ] [
poke im (im/size/y - y * im/size/x + x) color
]
itmax: 30 minXPos: 0.0 minYPos: 0.0 zoom: 100.0 rmax: 3
norma: func[ xx yy ] [ square-root ((yy ** 2) + (xx ** 2)) ]
rescale: func[ coo zoo offs ] [ ( coo / zoo ) + offs ]
calc-pixel: func [xPixel yPixel] [
xStart: rescale xPixel zoom ( - 3.0 + minXPos ) yStart: rescale yPixel zoom ( - 2.0 + minYPos )
xcic: xStart ycic: yStart count: 0 r: 0.0
while [ r <= rmax and ( count < itmax ) ][
xtem: (xcic ** 2 ) - (ycic ** 2) + xStart ycic: (2.0 * xcic * ycic ) + yStart
r: norma xcic ycic xcic: xtem count: count + 1
]
if (r < rmax)[ return r ] return -1
]
view layout [
text "threshold" tresInp: field to-string rmax
text "iterations" iterInp: field to-string itmax
text "zoom" zoomInp: field to-string zoom
text "x position" icsInp: field to-string minXPos
text "y position" ipsInp: field to-string minYPos
pgBar: progress 200x15 coal blue 0.0
button "Draw" [
zoom: to-decimal zoomInp/data itmax: to-integer iterInp/data
minXPos: to-decimal icsInp/data minYPos: to-decimal ipsInp/data
rmax: to-integer tresInp/data clear-im im bg-color
repeat x x-siz [
repeat y y-siz [
erre: calc-pixel x y inrange: ( not-equal? erre -1 )
if inrange[ set-pixel im x y make-col erre ]
]
if ( x // 10 ) == 0 [ show img ]
pgBar/data: ( x / x-siz ) show pgBar
]
show img
]
at 240X10 img: image im
] Notes
|