0 / 0 / 0
Регистрация: 22.03.2022
Сообщений: 20

Радуга

25.03.2022, 21:26. Показов 1890. Ответов 10

Студворк — интернет-сервис помощи студентам
Привет, я использую такой код для преобразования полей esp и моего текста в радугу, но цвета внезапно меняются с красного на зеленый, как я могу улучшить этот переход? или есть кто-то, кто может сказать более красивый код радуги, как этот

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
float RColor = 1;
float GColor = 1;
float BColor = 0;
int step = 0;
float dr = 0.0003;
 
void Update()
{
    if (step == 0) if (GColor < 1) GColor += GColor + dr; else step++;
    else if (step == 1) if (RColor > 0) RColor -= dr; else step++;
    else if (step == 2) if (BColor < 1) BColor += dr; else step++;
    else if (step == 3) if (GColor > 0) GColor -= dr; else step++;
    else if (step == 4) if (RColor < 1) RColor += dr; else step++;
    else if (step == 5) if (BColor > 0) BColor -= dr; else step = 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2022, 21:26
Ответы с готовыми решениями:

С++ Радуга
С клавиатуры вводится символ, значение которого 'ч', 'п', 'же', 'с', 'г', 'с', 'ф' - первые буквы названий цветов радуги. В зависимости от...

Радуга
Господа программисты, если можно, то просьба помочь и подоходчивее. Хочу сделать сайт, на главной странице задний фон - это флешка,...

Рисунок - радуга
Подскажите, пожалуйта, как нарисовать радугу в Паскале. Правда, у нас задача облегчена. Там не дуга используется, а круг. (радиус меняется,...

10
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
25.03.2022, 23:56
slavykas2121, для rgba8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cmath>
#include <algorithm>
 
struct color { unsigned char r, g, b, a; };
// генератор "радуги", x = [0..255]
color gradient(unsigned char x)
{
    const int h = x * 6;
    const int r = std::min(255, std::max(0, std::abs(h - 3 * 255) - 255));
    const int g = std::min(255, std::max(0, 2 * 255 - std::abs(h - 2 * 255)));
    const int b = std::min(255, std::max(0, 2 * 255 - std::abs(h - 4 * 255)));
    return { r, g, b, 255 };
}
0
0 / 0 / 0
Регистрация: 22.03.2022
Сообщений: 20
26.03.2022, 10:39  [ТС]
zayats80888, Я получаю эти ошибки
Миниатюры
Радуга  
0
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
26.03.2022, 10:42
slavykas2121, подправь типы
const unsigned char r =
const unsigned char g =
const unsigned char b =
0
0 / 0 / 0
Регистрация: 22.03.2022
Сообщений: 20
26.03.2022, 10:47  [ТС]
Алексей1153, на этот раз я получил такую ​​​​ошибку
Миниатюры
Радуга  
0
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
26.03.2022, 10:54
slavykas2121, оберни в скобки вот так:

(std::min)......
0
0 / 0 / 0
Регистрация: 22.03.2022
Сообщений: 20
26.03.2022, 11:18  [ТС]
Может ли кто-нибудь предложить другой код радуги RGB или кто-нибудь может исправить код радуги, который я разместил выше, извините за мое невежество
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
26.03.2022, 13:15
slavykas2121, h должен иметь тип int, его не нужно было исправлять.
Цитата Сообщение от slavykas2121 Посмотреть сообщение
Может ли кто-нибудь предложить другой код радуги RGB или кто-нибудь может исправить код радуги, который я разместил выше, извините за мое невежество
То же самое для rgb32f:
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
#include <cmath>
#include <algorithm>
 
struct color { float r, g, b; };
// c++17 для std::clamp, или заменить на std::max(std::min(val, 1.0f), 0.0f), где val - первый аргумент std::clamp
color gradient(float x)
{
    float const h = std::fmod(x, 1.0f) * 6.0f;
    float r = std::clamp(std::abs(h - 3.0f) - 1.0f, 0.0f, 1.0f);
    float g = std::clamp(2.0f - std::abs(h - 2.0f), 0.0f, 1.0f);
    float b = std::clamp(2.0f - std::abs(h - 4.0f), 0.0f, 1.0f);
    return { r, g, b };
}
 
// твой код
color cl{ 1.0f }; 
float step = 0.0f;
float const dr = 0.0003f;
 
void Update()
{
    step += dr;
    if (step > 1.0f) step -= 1.0f;
    cl = gradient(step);
}
Добавлено через 9 минут
По сути, это просто оптимизированная конвертация HSV в RGB, где S = V = 1.
Вот демонстрация работы(оптимизированное и оригинальное)
https://www.shadertoy.com/view/stfyRj
0
0 / 0 / 0
Регистрация: 22.03.2022
Сообщений: 20
26.03.2022, 15:18  [ТС]
zayats80888, Вот как я использовал код, который я использовал, как я должен использовать код, который вы скинули?
Миниатюры
Радуга   Радуга  
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
26.03.2022, 15:40
Цитата Сообщение от slavykas2121 Посмотреть сообщение
Вот как я использовал код, который я использовал, как я должен использовать код, который вы скинули?
Перестаньте публиковать код в виде картинок.

C++
1
glFont.Print(16, 13, cl.r, cl.g, cl.b, "Hello world!");
0
0 / 0 / 0
Регистрация: 22.03.2022
Сообщений: 20
26.03.2022, 19:14  [ТС]
zayats80888,
спасибо, это сработало для меня

Добавлено через 3 часа 28 минут
zayats80888, Спасибо за вашу помощь.Это очень помогло мне, но я хочу кое-что спросить. Можно ли сделать радугу слева направо?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.03.2022, 19:14
Помогаю со студенческими работами здесь

Радуга в паскале
begin y:=200; for i:=1 to 30 do begin if i&lt;5 then SetColor(4); if (i&gt;5)and(i&lt;10) then SetColor(14); ...

Формула дуги(радуга)
Приветствую. Есть радиус круга - R. Есть сила - S. Подскажите, пожалуйста, формулу, чтобы из этих данных получить плавную дугу,...

Радуга на мониторе ноутбуку ASUS
Радуга на мониторе ноутбуку ASUS

Радуга и Флаттершай придумали игру
Одним вечером Радуга и Флаттершай придумали игру. Так как пони дружат, то и в игре они решили не соревноваться, а вместе двигаться к общей...

Интеграция сайта с программой КСБ-Радуга (Портье)
Доброго времени суток. Сталкивался ли кто-либо с проблемой интеграции сайта с программой КСБ-Радуга (Портье)?? Это программа позволяет...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru