forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Управление цветом с помощью HSL (http://forum.boolean.name/showthread.php?t=8467)

ELIAS 12.06.2009 22:52

Управление цветом с помощью HSL
 
Для частиц салюта нужны только яркие и сочные цвета, причем рандомные. С помощью ргб этого так просто не добиться.
Вспомнил про HSL(Оттенок Сочность Яркость)-тут достаточно менять только первый параметр в пределах [0;360] - будут меняться оттенки цвета, а два других оставляем всегда в 100, всегда получаем яркие и сочные цвета.
Как воспользоваться этим HSL(иначе HSB ) в блитце. Подозреваю что раз команды нет, то надо как то выкручиваться через функцию, которая будет переводить нужный нам HSL в соответсвующий ему RGB
???

ABTOMAT 12.06.2009 23:23

Ответ: Управление цветом с помощью HSL
 
В поиск

MiXaeL 12.06.2009 23:30

Ответ: Управление цветом с помощью HSL
 
или в гугл)

А еще лучше в вики сначала глянуть, ведь не сложно, да?
http://ru.wikipedia.org/wiki/HLS
http://ru.wikipedia.org/wiki/HSV_(%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%B2%D0%B0%D1 %8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C)

ffinder 12.06.2009 23:32

Ответ: Управление цветом с помощью HSL
 
; ----------------------------------------------------------------------------
; This function takes a color in HSV format and returns a color in RGB format.
; the result is returned in global COLOR property of a Blitz3D engine
; ----------------------------------------------------------------------------
Function HSV__RGB(h#, s#, v#)
If s = 0 Then
r# = g# = b# = v ;grey
Else
h = h / 60
i = Floor(h)
f# = h - i
p# = v * (1 - s)
q# = v * (1 - s * f)
t# = v * (1 - s * (1 - f))
Select i
Case 0
r# = v
g# = t
b# = p
Case 1
r# = q
g# = v
b# = p
Case 2
r# = p
g# = v
b# = t
Case 3
r# = p
g# = q
b# = v
Case 4
r# = t
g# = p
b# = v
Default
r# = v
g# = p
b# = q
End Select
EndIf
Color r, g, b
; Color r * 255, g * 255, b * 255
End Function

Graphics 720,480

For i= 0 To 359
For j = 0 To 15
HSV__RGB(i, 0.5, j*16)
Rect i*2, 20+j*25, 2, 24, True
Next
Next

H@NON 13.06.2009 00:06

Ответ: Управление цветом с помощью HSL
 
http://blitzbasic.com/codearcs/codearcs.php?code=2333

MiXaeL 13.06.2009 00:45

Ответ: Управление цветом с помощью HSL
 

Цитата:

Copied (and translated!) from Wikipedia's article on HSL and HSV.
вики рулит))

ELIAS 13.06.2009 12:09

Ответ: Управление цветом с помощью HSL
 
Не понятно как пользоваться этими функциями HSL из поста 4 и из офф.сайта.
В цвете ргб нужно 3 переменных, а тут весь цвет кодируется в одной переменной.:(

ЗЫ: а как здесь можно попасть на раздачку ключей к FastImage? Или не раздают вовсе?

jimon 13.06.2009 12:29

Ответ: Управление цветом с помощью HSL
 
ELIAS
в RGB надо 1 переменная :) точнее 3\4 обычного 4-байтового int'а, для HSL видимо тоже хватает 3\4 обычного int'а (они там угл всунули в 0-255 вроде как)
чтобы достать конкретные значения для определённого канала или вытаскивай байты или исправляй вот эти строчки в коде функций
Код:

...
Return (R Shl 16) Or (G Shl 8) Or B; Or $FF000000
...
HSL=(hv Shl 16) Or (sv Shl 8) Or lv; Or $FF000000
...

в них 3 байта запаковываются в один int


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot