Calcular a cor em um determinado ponto em um gradiente entre duas cores?

Portanto, este é essencialmente o método que eu gostaria de escrever (em Objective-C / Cocoa, usandoUIColors, mas estou realmente interessado apenas na matemática subjacente):

+ (UIColor *)colorBetweenColor:(UIColor *)startColor andColor:(UIColor *)endColor atLocation:(CGFloat)location;

Então, como exemplo, digamos que eu tenho duas cores, vermelho puro e azul puro. Dado um gradiente linear entre os dois, quero calcular a cor com, digamos, a marca de 33% nesse gradiente:
Então, se eu chamasse meu método assim:

UIColor *resultingColor = [UIColor colorBetweenColor:[UIColor redColor] andColor:[UIColor blueColor] atLocation:0.33f];

Gostaria de obter a cor resultante em 'B', e da mesma forma, passando0.0f pois o local retornaria a cor 'A' e1.0f retornaria a cor 'C'.

Então, basicamente, minha pergunta é: como eu misturaria os valores RGB de duas cores e determinaria a cor em um determinado local entre elas?

questionAnswers(3)

yourAnswerToTheQuestion