Опубликовано: 2020-05-26 08:00:00
«Классический» фрактал – папоротник
В этой статье представлена неплохая реализация «классического» фрактала по названием папоротник.
Рассмотрим исходный текст программы:
- DECLARE SUB MAKEBMP (NAMEBMP$)
- CONST ITERATIONS = 1000000
- DIM T AS DOUBLE, X AS DOUBLE, Y AS DOUBLE, P AS DOUBLE
- DIM K AS LONG
- DIM MIDX AS INTEGER, MIDY AS INTEGER, RADIUS AS INTEGER
- ON TIMER(1) GOSUB SHOWITER
- TIMER ON
- SCREEN 12
- FOR K = 1 TO 15
- OUT &H3C8, K
- IF K < 16 THEN
- OUT &H3C9, K: OUT &H3C9, 25 + K * 2: OUT &H3C9, 0
- ELSE OUT &H3C9, K: OUT &H3C9, 54: OUT &H3C9, 0
- END IF
- NEXT: K = 10
- MIDX = 320
- MIDY = 480
- RADIUS = .1 * MIDY
- RANDOMIZE TIMER
- X = 1
- Y = 0
- FOR K = 1 TO ITERATIONS
- P = RND
- T = X
- IF P <= .85 THEN
- X = .85 * X + .04 * Y
- Y = -.04 * T + .85 * Y + 1.6
- ELSE
- IF P <= .92 THEN
- X = .2 * X - .26 * Y
- Y = .23 * T + .22 * Y + 1.6
- ELSE
- IF P <= .99 THEN
- X = -.15 * X + .28 * Y
- Y = .26 * T + .24 * Y + .44
- ELSE
- X = 0
- Y = .16 * Y
- END IF
- END IF
- END IF
- PSET (MIDX + RADIUS * X, MIDY - RADIUS * Y), POINT(MIDX + RADIUS * X, MIDY - RADIUS * Y) + 1
- NEXT
- MAKEBMP "PAPOROTNIK"
- END
- SHOWITER: LOCATE 1: PRINT "ITERATIONS: "; K: IF INKEY$ <> "" THEN END
- RETURN
- BGDT: DATA 66,77,54,254,0,0,0,0,0,0,54,4,0,0,40,0,0
- DATA 0,128,2,0,0,224,1,0,0,1,0,8,0,0,0,0,0,0
- DATA 250,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0
- SUB MAKEBMP (NAMEBMP$)
- OPEN NAMEBMP$ + ".BMP" FOR BINARY AS #3
- RESTORE BGDT
- FOR BYTE& = 1 TO 54
- READ ZGLV%: PUT #3, BYTE&, ZGLV%
- NEXT BYTE&: BYTE& = 55
- FOR II% = 0 TO 255
- OUT &H3C7, II%: R% = INP(&H3C9) * 4: G% = INP(&H3C9) * 4: B% = INP(&H3C9) * 4
- BT1% = CVI(CHR$(B%) + CHR$(G%)): BT2% = CVI(CHR$(R%) + "№")
- PUT #3, BYTE&, BT1%: PUT #3, BYTE& + 2, BT2%
- BYTE& = BYTE& + 4
- NEXT II%
- FOR Y% = 479 TO 0 STEP -1
- FOR X% = 0 TO 639
- CVE% = POINT(X%, Y%)
- PUT #3, BYTE&, CVE%: BYTE& = BYTE& + 1
- NEXT X%
- NEXT Y%
- CLOSE #3
- END SUB
Рисунок 1 – Исходный текст для построения фрактала-папоротника
Рисунок 2 – Результат построения фрактала-папоротника
Программа сохранит полученный результат в файл под названием PAPOROTNIK.BMP.
Спасибо за прочтение этой статьи.
Прикрепленные файлы: