Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
60
Task/Mandelbrot-set/F-Sharp/mandelbrot-set-1.fs
Normal file
60
Task/Mandelbrot-set/F-Sharp/mandelbrot-set-1.fs
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
open System.Drawing
|
||||
open System.Windows.Forms
|
||||
type Complex =
|
||||
{
|
||||
re : float;
|
||||
im : float
|
||||
}
|
||||
let cplus (x:Complex) (y:Complex) : Complex =
|
||||
{
|
||||
re = x.re + y.re;
|
||||
im = x.im + y.im
|
||||
}
|
||||
let cmult (x:Complex) (y:Complex) : Complex =
|
||||
{
|
||||
re = x.re * y.re - x.im * y.im;
|
||||
im = x.re * y.im + x.im * y.re;
|
||||
}
|
||||
|
||||
let norm (x:Complex) : float =
|
||||
x.re*x.re + x.im*x.im
|
||||
|
||||
type Mandel = class
|
||||
inherit Form
|
||||
static member xPixels = 500
|
||||
static member yPixels = 500
|
||||
val mutable bmp : Bitmap
|
||||
member x.mandelbrot xMin xMax yMin yMax maxIter =
|
||||
let rec mandelbrotIterator z c n =
|
||||
if (norm z) > 2.0 then false else
|
||||
match n with
|
||||
| 0 -> true
|
||||
| n -> let z' = cplus ( cmult z z ) c in
|
||||
mandelbrotIterator z' c (n-1)
|
||||
let dx = (xMax - xMin) / (float (Mandel.xPixels))
|
||||
let dy = (yMax - yMin) / (float (Mandel.yPixels))
|
||||
in
|
||||
for xi = 0 to Mandel.xPixels-1 do
|
||||
for yi = 0 to Mandel.yPixels-1 do
|
||||
let c = {re = xMin + (dx * float(xi) ) ;
|
||||
im = yMin + (dy * float(yi) )} in
|
||||
if (mandelbrotIterator {re=0.;im=0.;} c maxIter) then
|
||||
x.bmp.SetPixel(xi,yi,Color.Azure)
|
||||
else
|
||||
x.bmp.SetPixel(xi,yi,Color.Black)
|
||||
done
|
||||
done
|
||||
|
||||
member public x.generate () = x.mandelbrot (-1.5) 0.5 (-1.0) 1.0 200 ; x.Refresh()
|
||||
|
||||
new() as x = {bmp = new Bitmap(Mandel.xPixels , Mandel.yPixels)} then
|
||||
x.Text <- "Mandelbrot set" ;
|
||||
x.Width <- Mandel.xPixels ;
|
||||
x.Height <- Mandel.yPixels ;
|
||||
x.BackgroundImage <- x.bmp;
|
||||
x.generate();
|
||||
x.Show();
|
||||
end
|
||||
|
||||
let f = new Mandel()
|
||||
do Application.Run(f)
|
||||
12
Task/Mandelbrot-set/F-Sharp/mandelbrot-set-2.fs
Normal file
12
Task/Mandelbrot-set/F-Sharp/mandelbrot-set-2.fs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
let getMandelbrotValues width height maxIter ((xMin,xMax),(yMin,yMax)) =
|
||||
let mandIter (cr:float,ci:float) =
|
||||
let next (zr,zi) = (cr + (zr * zr - zi * zi)), (ci + (zr * zi + zi * zr))
|
||||
let rec loop = function
|
||||
| step,_ when step=maxIter->0
|
||||
| step,(zr,zi) when ((zr * zr + zi * zi) > 2.0) -> step
|
||||
| step,z -> loop ((step + 1), (next z))
|
||||
loop (0,(0.0, 0.0))
|
||||
let forPos =
|
||||
let dx, dy = (xMax - xMin) / (float width), (yMax - yMin) / (float height)
|
||||
fun y x -> mandIter ((xMin + dx * float(x)), (yMin + dy * float(y)))
|
||||
[0..height-1] |> List.map(fun y->[0..width-1] |> List.map (forPos y))
|
||||
3
Task/Mandelbrot-set/F-Sharp/mandelbrot-set-3.fs
Normal file
3
Task/Mandelbrot-set/F-Sharp/mandelbrot-set-3.fs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
getMandelbrotValues 80 25 50 ((-2.0,1.0),(-1.0,1.0))
|
||||
|> List.map(fun row-> row |> List.map (function | 0 ->" " |_->".") |> String.concat "")
|
||||
|> List.iter (printfn "%s")
|
||||
20
Task/Mandelbrot-set/F-Sharp/mandelbrot-set-4.fs
Normal file
20
Task/Mandelbrot-set/F-Sharp/mandelbrot-set-4.fs
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
open System.Drawing
|
||||
open System.Windows.Forms
|
||||
|
||||
let showGraphic (colorForIter: int -> Color) (width: int) (height:int) maxIter view =
|
||||
new Form()
|
||||
|> fun frm ->
|
||||
frm.Width <- width
|
||||
frm.Height <- height
|
||||
frm.BackgroundImage <-
|
||||
new Bitmap(width,height)
|
||||
|> fun bmp ->
|
||||
getMandelbrotValues width height maxIter view
|
||||
|> List.mapi (fun y row->row |> List.mapi (fun x v->((x,y),v))) |> List.collect id
|
||||
|> List.iter (fun ((x,y),v) -> bmp.SetPixel(x,y,(colorForIter v)))
|
||||
bmp
|
||||
frm.Show()
|
||||
|
||||
let toColor = (function | 0 -> (0,0,0) | n -> ((31 &&& n) |> fun x->(0, 18 + x * 5, 36 + x * 7))) >> Color.FromArgb
|
||||
|
||||
showGraphic toColor 640 480 5000 ((-2.0,1.0),(-1.0,1.0))
|
||||
Loading…
Add table
Add a link
Reference in a new issue