Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сравнение цветов. (http://www.flasher.ru/forum/showthread.php?t=171534)

Gogan 17.11.2011 22:17

Сравнение цветов.
 
Как сравнить цвета и определить какой из них теплее в спектре (ну тоесть тот который ближе к красному)?
Например при сравнении синего и зелёного результатом должен быть зелёный. При сравнении оранжевого и желтого результатом должен быть оранжевый, при сравнении зелёного и фиолетового результат - зелёный.

scarm 18.11.2011 07:56

1. Перевести цвет в HEX значения и потом сравнить первые два символа, кто больше, тот и выиграл:

Код AS1/AS2:

var color_hex_1:String = uint2hex(smth1.color);
var color_hex_2:String = uint2hex(smth2.color);
 
private function uint2hex(dec:uint):String {
        // http://blog.rcq129.com/coding/as3-uint-to-hex/
        var digits:String = "0123456789ABCDEF";
        var hex:String = '';
        while (dec > 0) {
                var next:uint = dec & 0xF;
                dec >>= 4;
                hex = digits.charAt(next) + hex;
        }
        if (hex.length == 0) hex = '0'
        return hex;
}


i.o. 18.11.2011 14:35

Код AS3:

uint#toString(16)

Не, не слышал.

Psycho Tiger 18.11.2011 14:41

Ближе к красному - это значит большее по абсолютному значению?

Genzo 18.11.2011 15:08

Если по абсолютному, то так :
Код AS3:

var color1:uint = 0xFF1234;
var color2:uint = 0xFС1234;
var red1:uint = (color1 & 0xFF0000) >> 16;
var red2:uint = (color2 & 0xFF0000) >> 16;
 
if(red1 > red2){}


Psycho Tiger 18.11.2011 15:13

Неплохо, неплохо.
Код AS3:

var color1:uint = 0xFF1234;
var color2:uint = 0xFС1234;
if (color1 > color2)


crazyone 18.11.2011 15:15

Перевести нужно в hsb, а потом сравнить показатели hue. У кого ближе к красному - тот и выиграл.

Добавлено через 4 минуты
http://en.wikipedia.org/wiki/Hue#Computing_hue_from_RGB

Gogan 18.11.2011 22:22

Цитата:

Сообщение от crazyone (Сообщение 1046883)
Перевести нужно в hsb, а потом сравнить показатели hue. У кого ближе к красному - тот и выиграл.

От души, спасибо. По красоте ! :victory:


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.