Перейти к содержимому

Фото
- - - - -

Маленькая задачка


  • Вы не можете создать новую тему
  • Please log in to reply
3 ответов в этой теме

#1 tomatensaft

tomatensaft

    Samurai Jack

  • Пользователь
  • 449 сообщений
  • Откуда:Tallinn

Отправлено 21 Апрель 2005 - 17:55

Нужно сделать полупрозрачную картинку. Дается фоновое изображение и на переднем плане, полупрозрачное. Коеэфициент прозрачности может изменяться.

Задача: вывести формулу вычисления цвета каждого пикселя конечного изображения и составить алгоритм расчета конечной цветовой матрицы.

Хочу убедиться, что я правильно ее решил... ;)

Сообщение изменено: tomatensaft (21 Апрель 2005 - 17:58 )

  • 0
"This is all I want'd t' say 'bout dat..." © Forest Gump

#2 crazy russian

crazy russian
  • Пользователь
  • 153 сообщений

Отправлено 21 Апрель 2005 - 18:01

твое решение выполняет задачу?
  • 0

#3 tomatensaft

tomatensaft

    Samurai Jack

  • Пользователь
  • 449 сообщений
  • Откуда:Tallinn

Отправлено 21 Апрель 2005 - 22:08

Ну да... =)

В общем, вот оно:

Формула очень простая -- абсолютная величина разницы каждой из цветовых составляющих (RGB) помноженная на коэффициент непрозрачности:

float transparency_coeff = 1.0 - 0.62;
for (each pixel) {
  for(each color) {
   float drawpx[pixel][color] = abs(bgpx[pixel][color] - fgpx[pixel][color]) * transparency_coeff;
  }
}

Еще вариант (если цвет хранится в одном 32-битном числе):

float transparency_coeff = 1.0 - 0.62;
unsigned long drawpx[npixels];
for (each pixel) {
  drawpx[pixel] = abs(bgpx[pixel] - fgpx[pixel]) * transparency_coeff;
}


Вычисление тут грубое, без учета остатка.

Сообщение изменено: tomatensaft (21 Апрель 2005 - 22:09 )

  • 0
"This is all I want'd t' say 'bout dat..." © Forest Gump

#4 crazy russian

crazy russian
  • Пользователь
  • 153 сообщений

Отправлено 22 Апрель 2005 - 07:06

tomatensaft, если выполняет - значит правильное ;) Хочешь заоптимизировать - запускай профайлер =)
  • 0