Saturday, February 13, 2016

hénon attractor

French astronomer Michel Hénon reported on this strange, fractal attractor in 1976. Since then, it has been among the most studied examples of chaotic dynamical systems.
{-# LANGUAGE NoMonomorphismRestriction #-}
import Graphics.UI.SDL as SDL
(xRes, yRes) = (1366, 768)
(a, b) = (1.4, 0.3)
main = withInit [InitVideo] $ do
w <- setVideoMode xRes yRes 32 [NoFrame]
s <- createRGBSurface [] 1 1 32 0 0 0 0
fillRect s Nothing $ Pixel 0xFFFFFF
enableEvent SDLMouseMotion False
setCaption "Hénon" "Hénon"
render w s henon
SDL.flip w
run w
run w = do
e <- pollEvent
delay 64
case e of
KeyUp (Keysym SDLK_ESCAPE _ _) -> return ()
_ -> run w
render w s = mapM_ draw
where
rect (x,y) = Just $ Rect (round x) (round y) 1 1
g (x,y) = (500*x + xRes / 2, 900*y + yRes / 2)
draw (x,y) = blitSurface s Nothing w $ rect $ g (x,y)
henon = take 99999 $ filter g $ iterate f (0,0)
where
f (x,y) = (1 - a*x^2 + y, b*x)
g (x,y) = -1.5 < x && x < 1.5 && -0.45 < y && y < 0.45
view raw michel_henon.hs hosted with ❤ by GitHub

No comments:

Post a Comment