Producto de punto y luminancia / Findmyicone

Todos,

Tengo una pregunta básica con la que estoy luchando aquí. Cuando mire el código de muestra de findmyicone de WWDC 2010, verá esto:

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);
}

Y luego se llama:

normalize(orangeColor, referenceColor);

Al ejecutar el depurador, está convirtiendo BGRA: (Rojo 255, Verde 127, Azul 0) a (Rojo 0, Verde 255, Azul 0). He buscado en la web y SO para encontrar detalles sobre la luminancia y el producto de puntos y realmente no hay información.

1- ¿Puede alguien guiarme en lo que hace esta función?

2- ¿Me pueden guiar a algunos temas útiles / cartilla en línea también?

Gracias de nuevo KMB

Respuestas a la pregunta(1)

Su respuesta a la pregunta