Page 1 of 1

FractalTree

Posted: Tue May 22, 2018 9:37 pm
by 0CodErr
This example draws a fractal tree:
Spoiler:
1.png
1.png (36.38 KiB)
Viewed 8373 times
Tools needed:
FractalTree.7z (2.03 KiB)
Downloaded 334 times

Re: FractalTree

Posted: Tue May 22, 2018 10:37 pm
by Leency
Вах, красота.
Надо залить на СВН и добавить в дистр (можно бинарник).

Было бы клево добавить возможность установки обоями рабочего стола сгенерированного изображения (но чтобы при этом генерировалась картинка размерами равная рабочему столу, чтобы не размазывалась).

P.S. Код ня, но зачем так много тулзов?)
P.P.S. Тебе нужно где-то держать репозитарий или просто обновляемый архив со всеми компиляторами и библиотеками которые используешь.

Re: FractalTree

Posted: Wed May 23, 2018 8:52 am
by IgorA
Смотрится красиво. Но слева самая маленькая ветка по цвету выделяется из основной гаммы. Она красного цвета, а все остальные ветви зеленые, а красная сторона дерева справа.

Re: FractalTree

Posted: Thu May 24, 2018 10:12 am
by 0CodErr
IgorA wrote:Но слева самая маленькая ветка по цвету выделяется из основной гаммы. Она красного цвета, а все остальные ветви зеленые
А, это из-за формулы цвета

Code: Select all

eax = RGB(127, Abs(Angle), Depth * 24)
Сейчас глубина 11

Code: Select all

Invoke DoDraw, X, Y, -90, 11
Если глубину задавать меньше, чем 11, то ветка будет зелёная. Просто вот эти значения

Code: Select all

Abs(Angle)
Depth * 24
выходят за пределы 255, здесь по идее нужна арифметика с насыщением.
Например, ветка будет зелёной, если сделать так(добавлены сравнения .If GREATER?)

Code: Select all

    mov eax, Angle        ;
    test eax, eax         ;
    .If SIGN?             ;
      neg eax             ;
    .EndIf                ;
    
    cmp eax, 255   ;
    .If GREATER?
      mov eax, 255
    .EndIf
    
    shl eax, 8            ; eax = RGB(127, Abs(Angle), Depth * 24)
    or eax, 127 SHL 16    ;
    mov ebx, Depth        ;
    imul ebx, 24          ;
    
    cmp ebx, 255   ;
    .If GREATER?
      mov ebx, 255
    .EndIf
    
    or eax, ebx           ;
    Invoke DrawLine, X1, Y1, X2, Y2, eax
Leency wrote:Надо залить на СВН и добавить в дистр (можно бинарник).
Можно собирать на сервере с помощью JWASM — это форк товарища XVilka http://board.kolibrios.org/viewtopic.ph ... 806#p64806
Сейчас на сервере с помощью JWASM собирается программа RUN http://board.kolibrios.org/viewtopic.php?f=9&t=3584 вот она на SVN http://websvn.kolibrios.org/listing.php ... f773176113
Можно сделать аналогично.
Leency wrote:но зачем так много тулзов?
Странный вопрос, однако :lol:
Теоретически можно было бы без objcopy, но у ld есть проблема с OUTPUT_FORMAT("binary"), хотя, возможно, линуксовый ld такой проблемы не имеет(но всё равно). Ещё можно было бы воспользоваться Ваткомовским линкером, но он вряд ли есть на сервере.
Ассемблер нужен для компиляции asm-файла.
Линкер нужен для линковки с библиотекой KolibriOS.lib.
Так что, ничего лишнего.

Re: FractalTree

Posted: Thu May 24, 2018 4:04 pm
by lev
А почему поверху наблюдаются плоские площадки?
Так и должно быть? Или ошибки округления/использование целых чисел/ещё чего-то?

Re: FractalTree

Posted: Thu May 24, 2018 7:06 pm
by 0CodErr
lev wrote:А почему поверху наблюдаются плоские площадки?
Так и должно быть?
Да, это фрактал такой.
lev wrote:ошибки округления/использование целых чисел/ещё чего-то
Где конкретно по-твоему ошибка?

Re: FractalTree

Posted: Sun May 27, 2018 10:39 am
by 0CodErr
Вот такой кустарничек :)
Spoiler:
1.PNG
1.PNG (87.3 KiB)
Viewed 8244 times
Нажимайте клавишу Enter, чтобы сгенерировать новый куст.
Для сборки нужно то же самое: LD, ObjCopy, UASM, KolibriOS.lib.
FractalBush.7z (3.36 KiB)
Downloaded 330 times

Re: FractalTree

Posted: Sat Jun 02, 2018 9:47 am
by 0CodErr
Не совсем дерево, но всё же растение :)
Фрактальный папоротник.
Spoiler:
1.png
1.png (36.54 KiB)
Viewed 8146 times
Для сборки — всё то же самое.
FractalFern.7z (2.95 KiB)
Downloaded 342 times