Produto de ponto e luminância / Findmyicone

Todos,

Eu tenho uma questão básica com a qual estou lutando aqui. Quando você olha para o código de amostra findmyicone do WWDC 2010, você verá isto:

static const uint8_t orangeColor[] = {255, 127, 0};
uint8_t referenceColor[3];

// Remove luminance
static inline void normalize( const uint8_t colorIn[], uint8_t colorOut[] ) {

// Dot product
int sum = 0;
for (int i = 0; i < 3; i++)
sum += colorIn[i] / 3;

for (int j = 0; j < 3; j++)
colorOut[j] = (float) ((colorIn[j] / (float) sum) * 255);
}

E então é chamado:

normalize(orangeColor, referenceColor);

Executando o depurador, ele está convertendo BGRA: (Vermelho 255, Verde 127, Azul 0) para (Vermelho 0, Verde 255, Azul 0). Eu olhei na web e SO para encontrar detalhes sobre luminância e produto de ponto e não há realmente nenhuma informação.

1- Alguém pode me orientar sobre o que esta função está fazendo?

2- Você pode me guiar para alguns tópicos úteis / primer online também?

Obrigado novamente KMB

questionAnswers(1)

yourAnswerToTheQuestion