![](/logo_grey.gif)
Последние записи
- Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?
- Lazarus, проверка существования строки таблице
- BASM и record, обращение к полям записи
- Web PHP Framework Symfony
- Относительный путь для вывода картинки на html странице
- Массовое открытие гиперссылок в браузере
- Скопировать значение строки из таблицы в textarea
- Рамки для страниц отчетов
- Вывод StdOut консоли в TMemo
- Чтение из файла большого размера (нехватка памяти)
![](http://programmersclub.ru/slurm3.jpg)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
![](http://programmersclub.ru/katajpg.jpg)
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
31st
Мар
Сортировка цветов
Posted by maloy under Delphi, Архив, Заметки
Altera
Вот такая головоломка заявилась:
Короче надо отсортировать цвета. Ну вообще я в функции сравнения следующее написал:
result := color1 - color2;
Сортирует то как надо, в математическом плане. Да смотрится это для человека как-то не так!
Вон, между фиолетовыми какой про межуток из синих цветов. Надо-бы как-то так, что бы реальнее было-бы…
mutabor
p/s Нарисовал на листике, действительно так и есть, три синусоиды к-рые отличаются по фазе. Вот тебе и значения R G B.
Вот код, и результат его работы
uses
Math;
var
r, g, b: byte;
i: integer;
begin
for I := 0 to 360 do begin
r:=Round(128+cos(DegToRad(i))*128);
g:=Round(128+cos(DegToRad(i+240))*128);
b:=Round(128+cos(DegToRad(i+120))*128);
Canvas.Pen.Color:=RGB(r,g,b);
Canvas.MoveTo(i, 0);
Canvas.LineTo(i, 50);
end;
end;
Красный цвет совпадает с косинусом, зеленый — сдвинут по фазе на 240 град., синий на 120.
Но за счет того что синусоида имеет плавную форму, чистых цветов на границах нет (желтого например), тут нужно синусоиду как бы дискретной сделать, с линейными (по диагонали) перепадами, и плоскими пиками равным по длине перепаду * 2. Плюс черные полосы нужно разобраться что тут делают.
Altera
Сделал так:
function compareColor(const color1, color2: tColor): integer;
var
h1, h2, s1, s2, l1, l2: byte;
begin
ColorToHSL(color1, h1, s1, l1);
ColorToHSL(color2, h2, s2, l2);
result := h2 - h1;
if result = 0 then
result := s2 - s1;
if result = 0 then
result := l2 - l1;
end;
Вроде работает нормально…
тема на форуме от 2009 года
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
![пеллетные котлы](http://programmersclub.ru/respective.jpg)
пеллетные котлы
![пеллетный котел](http://programmersclub.ru/emtas.jpg)
Пеллетный котел Emtas
![форум программистов](http://programmersclub.ru/banf336х280.gif)
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)