Benoit Mandelbrot Died on October 14 @ 85
Benoit Mandelbrot Died on October 14 @ 85
HP Z800 Workstation
CPU : Dual Xeon 5690 3.46GHz
RAM : 192GB RAM
GPU : NVIDIA QUADRO P5000 16GB
						CPU : Dual Xeon 5690 3.46GHz
RAM : 192GB RAM
GPU : NVIDIA QUADRO P5000 16GB
Re: Benoit Mandelbrot Died on October 14 @ 85
In Memory of Benoit Mandelbrot:
Run without debugger! 

			
			
									
									Run without debugger!
Code: Select all
Enumeration
#Window : #Gadget : #Image : #Timer : #Button
EndEnumeration
#Size = 150
Structure Complex
  Re.f : Im.f
EndStructure
Procedure HSV(Hue.f, Saturation.f, Value.f)
  Protected H = Int(Hue/60)
  Protected f.f = (Hue/60-H)
  Protected S.f = Saturation
  Protected V.f = Value * 255
  Protected p = V * (1-S)
  Protected q = V * (1-S*f)
  Protected t = V * (1-S*(1-f))
  Select H
    Case 1 : ProcedureReturn RGB(q,V,p)
    Case 2 : ProcedureReturn RGB(p,V,t)
    Case 3 : ProcedureReturn RGB(p,q,V)  
    Case 4 : ProcedureReturn RGB(t,p,V)
    Case 5 : ProcedureReturn RGB(V,p,q)  
    Default : ProcedureReturn RGB(V,t,p)
  EndSelect
EndProcedure 
Procedure.d ComplexAngle(*Complex.Complex)
  Protected Angle.f
  With *Complex
    Angle = ATan(\Im/\Re)
    If \Re < 0 : Angle + #PI : ElseIf Angle < 0 :  Angle + 2*#PI : EndIf
  EndWith
  ProcedureReturn Angle
EndProcedure
Global Dim Iteration.Complex(#Size*3, #Size*2)
Procedure CustomCallback(x, y, Color1, Color2)
  Protected Add.Complex : Add\Re = x/#Size-2 : Add\Im = y/#Size-1
  Protected Angle.f, Length.f, Darkness.f, Brightness.f, Temp.f
  Protected *Value.Complex = @Iteration(x, y)
  With *Value
    Temp = \Re*\Re - \Im*\Im
    \Im = 2*\Re*\Im + Add\Im
    \Re = Temp + Add\Re
    Length = Sqr(\Re*\Re+\Im*\Im)
    Angle = ComplexAngle(*Value)*180/#PI
  EndWith 
  If Length > 1e3 Or Length < 0
    Darkness = 0 : Brightness = 1
  ElseIf Length < 1
    Darkness = 1 : Brightness = Sqr(Length)
  Else
    Darkness = 1/Length : Brightness = 1
  EndIf
  ProcedureReturn HSV(Angle, Brightness, Darkness)
EndProcedure
CreateImage(#Image, #Size*3, #Size*2)
OpenWindow(#Window, 0, 0, ImageWidth(#Image), ImageHeight(#Image)+20, "Image", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
ImageGadget(#Gadget, 0, 20, ImageWidth(#Image), ImageHeight(#Image), ImageID(#Image))
ButtonGadget(#Button, 0, 0, #Size*3, 20, "Nächte Iteration")
Repeat
Event = WaitWindowEvent()
Select Event
  Case #PB_Event_Gadget
   Select EventGadget()
    Case #Button
     StartDrawing(ImageOutput(#Image))
      DrawingMode(#PB_2DDrawing_Transparent|#PB_2DDrawing_CustomFilter)
      CustomFilterCallback(@CustomCallback())
      Box(0, 0, #Size*3, #Size*2)
     StopDrawing()
     SetGadgetState(#Gadget, ImageID(#Image))
   EndSelect
  Case #PB_Event_CloseWindow
   End
EndSelect
ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and more ― Typeface - Sprite-based font include/module
						Lizard - Script language for symbolic calculations and more ― Typeface - Sprite-based font include/module


