Import mojo
Class Application Extends App
Field mx:Float=-2.2
Field my:Float=-1.2
Field omx:Int=1
Field omy:Int=1
Field z:Float=1.5
Field mi:Int=10
Method OnCreate()
SetUpdateRate 25
End
Method OnUpdate()
If MouseDown(MOUSE_LEFT)=True Then
z=z*0.995
If MouseX>(DeviceWidth*0.5) Then mx+=z*(MouseX-(DeviceWidth*0.5))*0.0001 Else mx+=z*(MouseX-(DeviceWidth*0.5))*0.0001
If MouseY>(DeviceHeight*0.5) Then my+=z*(MouseY-(DeviceHeight*0.5))*0.0001 Else my+=z*(MouseY-(DeviceHeight*0.5))*0.0001
mi=10+(0.5/z)
End If
If MouseDown(MOUSE_RIGHT)=True Then
z=z*1.005
If MouseX>(DeviceWidth*0.5) Then mx+=z*(MouseX-(DeviceWidth*0.5))*0.0001 Else mx+=z*(MouseX-(DeviceWidth*0.5))*0.0001
If MouseY>(DeviceHeight*0.5) Then my+=z*(MouseY-(DeviceHeight*0.5))*0.0001 Else my+=z*(MouseY-(DeviceHeight*0.5))*0.0001
mi=10+(0.5/z)
End If
If MouseDown=False Then
mi=mi+10
If mi>100+(100/z*0.25) Then mi=100+(100/z*0.25)
End if
End
Method OnRender()
If mi<(100+(100/z*0.25))then
DrawFractal(mx,my,z,mi)
End if
End
End
'FUNCTIONS----------------------------------------------------------------
Function Main()
New Application()
End
Function DrawFractal(x:Float,y:Float,z:Float,mi:Int)
Local px:Int
Local py:Int
Local s:Float=(z*Float(0.01))
Local c:Int
Local r:Int
Local g:Int
Local b:Int
Local y0:Float=y
For px=0 To DeviceWidth
y=y0
For py=0 To DeviceHeight
c=Mandelbrot(x,y,mi)
r=(c*10) Mod 255
SetColor r,0,0
DrawPoint px,py
y=y+s
Next
x=x+s
Next
SetColor 255,255,255
DrawRect DeviceWidth*0.25-1,DeviceHeight-4,DeviceWidth*0.5+1,3
SetColor 255,0,0
DrawRect DeviceWidth*0.25,DeviceHeight-3,(DeviceWidth*0.5)/(100+(100/z*0.25))*mi,1
End
Function Mandelbrot:Int(x1:Float,y1:Float,mi:int)
Local i:Int
Local an:Float
Local x0:Float
Local y0:Float
Local xn:Float
Local yn:Float
For i=1 To mi
xn=Pow(x0,2)-Pow(y0,2)+x1
yn=2*x0*y0+y1
an=Sqrt(Pow(xn,2)+Pow(yn,2))
If an>2 Then
Return i
End If
x0=xn
y0=yn
Next
End