ちょうど赤とか緑とか、Pがキリのいい値だったときは虹の色をそのまま返します。 色と色の中間の値だったときは、隣同士の色の中間を計算して返します。 例えば(実際は違いますが)、赤(255,0,0)の隣が青(0,0,255)で、Pがちょうどその半分の位置を指してたら、返す色は(127,0,127)です。