Просматривал программы на всеми забытом сайте. Меня заинтересовал один фрактал и я переписал код на PureBasic.
Procedure DrawH(x, y, raz)
LineXY( x - raz, y - raz, x - raz, y + raz);
LineXY (x - raz, y, x + raz, y) ;
LineXY( x + raz, y - raz, x + raz, y + raz);
EndProcedure
Procedure DrawHF(x1, y1, razmer, min)
x11 = x1 + razmer
y11 = y1 + razmer
x01 = x1 - razmer
y01 = y1 + razmer
x00 = x1 - razmer
y00 = y1 - razmer
x10 = x1 + razmer
y10 = y1 - razmer
DrawH(x1, y1, razmer)
razmer = razmer/2
If razmer >= min
DrawHF(x11, y11, razmer, min)
DrawHF(x01, y01, razmer, min)
DrawHF(x10, y10, razmer, min)
DrawHF(x00, y00, razmer, min)
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 320, 320, "H-tree", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 320, 320)
If StartDrawing(CanvasOutput(0))
Box(0,0,320,320,0)
DrawHF(160, 160, 80, 5)
StopDrawing()
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
LineXY( x - raz, y - raz, x - raz, y + raz);
LineXY (x - raz, y, x + raz, y) ;
LineXY( x + raz, y - raz, x + raz, y + raz);
EndProcedure
Procedure DrawHF(x1, y1, razmer, min)
x11 = x1 + razmer
y11 = y1 + razmer
x01 = x1 - razmer
y01 = y1 + razmer
x00 = x1 - razmer
y00 = y1 - razmer
x10 = x1 + razmer
y10 = y1 - razmer
DrawH(x1, y1, razmer)
razmer = razmer/2
If razmer >= min
DrawHF(x11, y11, razmer, min)
DrawHF(x01, y01, razmer, min)
DrawHF(x10, y10, razmer, min)
DrawHF(x00, y00, razmer, min)
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 320, 320, "H-tree", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0, 320, 320)
If StartDrawing(CanvasOutput(0))
Box(0,0,320,320,0)
DrawHF(160, 160, 80, 5)
StopDrawing()
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Набрал программу на Picocalc - не работает. Долго проверял исходник на наличие опечаток - бесполезно. Убрал razmer = razmer/2 и заменил razmer на razmer/2 - заработало.
Интересно, что во многих программах использовалось это самое выражение. Беглый поиск привел к разным версиям программы. Надо будет попробовать такие варианты.

Комментарии
Отправить комментарий