Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/27: Рейтинг темы: голосов - 27, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 27.03.2009
Сообщений: 25

Перевод температуры в RGB

12.12.2010, 13:20. Показов 5871. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поскольку прога пишется на C# то решил написать в этом разделе.
Задание такое: Есть целочисленная матрица со значениями от -500 до + 500 (к примеру).
Необходимо в зависимости от значения числа закрасить ячейку таблицы нужным цветом.
То есть например -500, поскольку эта самая холодная температура в матрице, то ячейка должна быть закрашена тёмно-синим цветом, а при +500 тёмно-красным цветом.

Необходим алгоритм для перевода темепературы, заданной в числах, в в цвет RGB, безусловно если такой существует. Или придётся самому алгоритм выдумывать???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2010, 13:20
Ответы с готовыми решениями:

Получения температуры из RGB изображения
Здравствуйте, столкнулся с такой проблемой! Имею RGB изображение детали, которая разогрета до температуры 1000 градусов! И мне...

Гистограмма CMYK/RGB - некорректный перевод из CMYK в RGB
Возникла проблема с правильностью перевода из RGB в CMYK. Все переменные до самого конца - double, но при этом расчёты будто ведёт пьяный...

Перевод из RGB в CMYK
Помогите с реализацией, а то не могу разобраться... Может кто работал в этой области... Добавлено через 1 минуту Может кто работал с...

4
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
12.12.2010, 15:06
Читай про HSV (цветовая модель). Hue - это и будет твоя температура. Нужно только перевести твой промежуток [-500, 500] в [0, 360]. HSV в RGB конвертировать можно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
public static Color ColorFromAhsb(int a, float h, float s, float b) {
 
  if (0 > a || 255 < a) {
    throw new ArgumentOutOfRangeException("a", a, 
      Properties.Resources.InvalidAlpha);
  }
  if (0f > h || 360f < h) {
    throw new ArgumentOutOfRangeException("h", h, 
      Properties.Resources.InvalidHue);
  }
  if (0f > s || 1f < s) {
    throw new ArgumentOutOfRangeException("s", s, 
      Properties.Resources.InvalidSaturation);
  }
  if (0f > b || 1f < b) {
    throw new ArgumentOutOfRangeException("b", b, 
      Properties.Resources.InvalidBrightness);
  }
 
  if (0 == s) {
    return Color.FromArgb(a, Convert.ToInt32(b * 255), 
      Convert.ToInt32(b * 255), Convert.ToInt32(b * 255));
  }
 
  float fMax, fMid, fMin;
  int iSextant, iMax, iMid, iMin;
 
  if (0.5 < b) {
    fMax = b - (b * s) + s;
    fMin = b + (b * s) - s;
  } else {
    fMax = b + (b * s);
    fMin = b - (b * s);
  }
 
  iSextant = (int)Math.Floor(h / 60f);
  if (300f <= h) {
    h -= 360f;
  }
  h /= 60f;
  h -= 2f * (float)Math.Floor(((iSextant + 1f) % 6f) / 2f);
  if (0 == iSextant % 2) {
    fMid = h * (fMax - fMin) + fMin;
  } else {
    fMid = fMin - h * (fMax - fMin);
  }
      
  iMax = Convert.ToInt32(fMax * 255);
  iMid = Convert.ToInt32(fMid * 255);
  iMin = Convert.ToInt32(fMin * 255);
 
  switch (iSextant) {
    case 1:
      return Color.FromArgb(a, iMid, iMax, iMin);
    case 2:
      return Color.FromArgb(a, iMin, iMax, iMid);
    case 3:
      return Color.FromArgb(a, iMin, iMid, iMax);
    case 4:
      return Color.FromArgb(a, iMid, iMin, iMax);
    case 5:
      return Color.FromArgb(a, iMax, iMin, iMid);
    default:
      return Color.FromArgb(a, iMax, iMid, iMin);
  }
}
1
0 / 0 / 0
Регистрация: 27.03.2009
Сообщений: 25
12.12.2010, 15:54  [ТС]
Спасибо.
Неплохой вариант.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
12.12.2010, 18:51
Nikola_Piterskii, hsb or hsv это не плохой вариант, только, если вы заметили нужно брать отрезок не (0, 360) а хотя-бы (0,300), потому, то на краях цвета сливаються.
0
0 / 0 / 0
Регистрация: 27.03.2009
Сообщений: 25
12.12.2010, 19:51  [ТС]
Цитата Сообщение от outoftime Посмотреть сообщение
Nikola_Piterskii, hsb or hsv это не плохой вариант, только, если вы заметили нужно брать отрезок не (0, 360) а хотя-бы (0,300), потому, то на краях цвета сливаються.
Да, я это учёл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.12.2010, 19:51
Помогаю со студенческими работами здесь

Перевод значение температуры по шкале Цельсия в Кельвины, Фаренгейты
Задача: Известно значение температуры по шкале Цельсия. Найти соответствующее значение температуры по шкале: а) Фаренгейта; б)...

Перевод из RGB в HSV
Доброго всем времени суток) Для одного web-приложения мне нужно реализовать функцию перевода цветов из RGB в HSV. В принципе я нашёл в сети...

Перевод из RGB в HSV
у меня есть три массива RGB картинки, соответственно красный, синий и зеленый. Как перейти из цветовой модели RGB в цветовую модель HSB...

Перевод RGB в HSV
Уважаемые форумчане! Есть функция для перевода RGB в HSV. void RGBtoHSV (int *hue, int *sat, int *val, int r, int g, int b) { int...

Перевод из HEX в RGB
Доброго времени суток, сколько уже рылся в интернете так и не нашел, как из RGB преобразовать в HEX? Добавлено через 2 часа 24 минуты ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru