iOS находит цвет в точке между двумя цветами

У меня проблема: мне нужно иметь возможность взять два цвета и сделать из них «виртуальный градиент». Затем мне нужно найти цвет в любой точке этой линии. Мой текущий подход заключается в следующем:

if (fahrenheit < kBottomThreshold)
{
    return [UIColor colorWithRed:kBottomR/255.0f green:kBottomG/255.0f blue:kBottomB/255.0f alpha:1];
}
if (fahrenheit > kTopThreshold)
{
    return [UIColor colorWithRed:kTopR/255.0f green:kTopG/255.0f blue:kTopB/255.0f alpha:1];
}

double rDiff = kTopR - kBottomR;
double gDiff = kTopG - kBottomG;
double bDiff = kTopB - kBottomB;

double tempDiff = kTopThreshold - kBottomThreshold;

double rValue;
double gValue;
double bValue;

rValue = kBottomR + ((rDiff/tempDiff) * fahrenheit);
gValue = kBottomG + ((gDiff/tempDiff) * fahrenheit);
bValue = kBottomB + ((bDiff/tempDiff) * fahrenheit);

return [UIColor colorWithRed:rValue/255.0f green:gValue/255.0f blue:bValue/255.0f alpha:1];

Переменные:

fahrenheit переменная, переданная в мою функцию, это число в этой виртуальной строке, для которого я хочу найти цвет.kTopR, kTopB, а такжеkTopG значения RGB для одного конца градиента. То же самое для ихkBottom двойники.kBottomThreshold а такжеkTopThreshold являются конечными точками моего градиента.

Вот моя проблема: когдаfahrenheit проходит через любой конец градиента, градиент, кажется, «прыгает» к другому значению.

Я включил пример проекта, размещенного на моем сервере S3,Вот.

Вам действительно нужно скачать проект и попробовать его на симуляторе / устройстве, чтобы понять, что я имею в виду (если вы не сошли с ума и не можете сказать, просто посмотрев на код)

Ответы на вопрос(4)

Ваш ответ на вопрос