Показать сообщение отдельно
Старый 04.03.2011, 23:30
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 5  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Всё таки цвета RGB поканально складываем и делим на количество.
Вычитание будет для проходящего света, например, при расчете прозрачного светофильтра.
А для смешивания цветов при самосвечении или излучении света в отраженном белом, как в случае с "живой краской":

Код AS1/AS2:
color1 = new Color(mc1);
color1.setRGB(0xFFFF00);
color2 = new Color(mc2);
color2.setRGB(0xFF0000);
color3 = new Color(mc3); 
 
//FF = (FF + FF) / 2
//7F = (FF + 00) / 2
//00 = (00 + 00) / 2
color3.setRGB(0xFF7F00);
А еще лучше использовать метод setTransform того же класса Color, что удобнее для вычислений и гибче, поскольку можно также работать с альфой каналов. Тем более использовать в связке с getTransform, чтобы можно было "макать" в уже окрашенный объект (палитру или элемент рисунка), узнавая текущую цветовую трансформацию.
Или даже Transform.colorTransform, хотя я не уверен, с этим методом не работал.

UPD. Поправьте меня, если я не прав, сомнения что-то появились. "Оптику" я хоть и сдал на отлично, но это была "Физика" и оч.давно.
Изображения
 
__________________
Идите первым!


Последний раз редактировалось mooncar; 05.03.2011 в 02:53.