Как изменить цвета RGB на их противоположности в C?
У меня есть функция, которая должна менять цвета в изображении на их противоположности. От красного к зеленому, от зеленого к синему и от синего к красному. Я уже некоторое время думаю и пытаюсь, но никак не могу заставить его работать. Однако я знаю, что с моим кодом нет никаких проблем. Потому что изображение действительно меняет цвета, но мне трудно сделать это правильно.
Что я уже пробовал:
Это код, который у меня сейчас есть. Я попытался посмотреть на цветовое колесо, чтобы увидеть, могу ли я переместить цвет пикселя на треть колеса. Диаграмма Цветового Колеса Онлайн[^]
Мой код выглядит так:
void reColor(Image *img) { img->height = 200; img->width = 150; for (unsigned int i = 0; i < img->height; i++) { for (unsigned int j = 0; j < img->width; j++) { if ((img->pixels[i][j].r <= 255 && img->pixels[i][j].g <= 255) && img->pixels[i][j].b == 0){ while (img->pixels[i][j].r != 0) { img->pixels[i][j].r -= 1; img->pixels[i][j].g += 1; } } else if ((img->pixels[i][j].r == 0 && img->pixels[i][j].g <= 255) && img->pixels[i][j].b <= 255) { while (img->pixels[i][j].g != 0) { img->pixels[i][j].g -= 1; img->pixels[i][j].b += 1; } } else if ((img->pixels[i][j].r <= 255 && img->pixels[i][j].g == 0) && img->pixels[i][j].b <= 255) { while (img->pixels[i][j].b != 0) { img->pixels[i][j].b -= 1; img->pixels[i][j].r += 1; } } } } }