Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Полезные функции

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 12.05.2025, 00:21   #1
polopok
Знающий
 
Регистрация: 17.07.2009
Сообщений: 201
Написано 52 полезных сообщений
(для 74 пользователей)
Corner ( углы)

Corner ( углы) Corner.rar
Функция графического представления улов ( битовая маска).
Углы : ( с заливкой / без заливки)
( -8,-7,-6,-5) - прямоугольные внутренние.
( -4,-3,-2,-1) -
прямоугольные внешние.
( 0,1,2,3) - скруглённые
внешние.
( 4,5,6,7) - скос.
( 8,9,10,11) -
скруглённые внутренние.
Дополнительно.
Функция графического представления треугольника
Функция графического представления линии ( битовая маска)
Пример exe в архиве.
__________________
Мой проект здесь

Последний раз редактировалось polopok, 12.05.2025 в 00:33. Причина: пере
(Offline)
 
Ответить с цитированием
Старый 12.05.2025, 17:43   #2
polopok
Знающий
 
Регистрация: 17.07.2009
Сообщений: 201
Написано 52 полезных сообщений
(для 74 пользователей)
Ответ: Corner ( углы)

Тут такая особенность, WritePixel и WritePixelFast по разному отображаются, если установлен viewPort 60, 40, 100, 40, вот и стоит заменить linebreak на функцию в Оффтопе.


Function linebreak( x1#, y1#, x2#, y2#, byte% = %11111111111111111111111111111111)
    if x1 = x2 and y1 = y2 then plot x1, y1
    
    local rgb = ColorBlue() Or ( ColorGreen() Shl 8) Or ( ColorRed() Shl 16)

    local xd# = x2 - x1
    local yd# = y2 - y1
    local steps#

    If Abs(xd) > Abs(yd) Then steps = Abs(xd) Else steps = Abs(yd)
    x2 = xd / Float(steps)
    y2 = yd / Float(steps)

    local ob = 0 
    local bit = False

    For steps = steps To 1 Step -1
        bit = byte Shr ob And %1

        if y1 > 0 and y1 < GraphicsHeight() - 1 and x1 > 0 and x1 < GraphicsWidth() - 1 then 
            If bit = 1 Then  WritePixel x1, y1, rgb
        endif
        
        x1 = x1 + x2
        y1 = y1 + y2
        
        ob = ob + 1
        If ob >= 32 Then ob = 0
    Next
End Function
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 06:52.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com