Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
sergiy
5 лет назад

39 FreeBASIC - Фракталы. строим квадрат Серпинсого

Квадрат Серпинского, или его ещё называют ковёр Серпинского, построить очень просто - квадрат делится на 9 квадратов(каждая сторона делится на три части) И вырезается средняя часть. Это же самое правило применяют к оставшимся 8 квадратам и и т.д.

Зададим квадрат стороной а и координатами его середины (x,y). Теперь вырежем(закрасим) средний квадрат:

сторона квадрата - а, значит координаты вершин для оператора line рисующего квадрат буду
(x-a/2,y-a/2) и (x+a/2,y+a/2). Чтобы квадрат нарисовался закрашенным указывем BF

line (x-a/2,y-a/2)-(x+a/2, y+a/2),0,BF

а оставшиеся восемь квадратов обработаем рекурсивно по такому же алгоритму.

ScreenRes 1024,768

paint(1,1),15

sub Serp(byval x as double, byval y as double, byval a as double, byval n as integer)
    line (x-a/2,y-a/2)-(x+a/2, y+a/2),0,BF
    if n>1 then
       Serp(x-a, y-a, a/3, n-1)
       Serp(x  , y-a, a/3, n-1)
       Serp(x+a, y-a, a/3, n-1)
       
       Serp(x+a, y  , a/3, n-1)
       
       Serp(x+a, y+a, a/3, n-1)
       Serp(x  , y+a, a/3, n-1)
       Serp(x-a, y+a, a/3, n-1)
       
       Serp(x-a, y  , a/3, n-1)
    end if
end sub

Serp(512, 384, 240, 4)
sleep

n=6

n=5

n=4

Больше ничего интересного и не придумаешь...

Разве что сдалать анимацию...

Сначала рисуем при n=1, потом при n=2 и т.д. до 6. А почему не до 7?

ScreenRes 1024,768

dim as integer i

paint(1,1),15 

for i=1 to 6
    Serp(512, 384, 240, i)
    sleep 1500
next i

cls

sleep

5
453.553 GOLOS
На Golos с October 2016
Комментарии (3)
Сортировать по:
Сначала старые