Me explico un poco mejor. La tarea de la function javascript es degradar de un color a otro, pero no hacer la media entre los dos, sino hacer el % de mezcla que yo le indique (pasoActual/pasosTotales), de esta manera poder pasar por ejemplo del rojo al azul en 10 pasos o en 100, llamando a la funcion respectivas veces. Todo lo que he intentado han salido chapuzas, y me estoy volviendo loco


Código PHP:
var _h0= "0123456789abcdef";
var _h = _h0.split("");
function rrggbb(r,g,b) {
r=_h[parseInt(r / 16)] + _h[r % 16];
g=_h[parseInt(g / 16)] + _h[g % 16];;
b=_h[parseInt(b / 16)] + _h[b % 16];;
return "#"+r+g+b;
}
function rgb(rrggbb) {
valor=0; colores=[rrggbb.substring(1,3),rrggbb.substring(3,5),rrggbb.substring(5,7)];
for(a=0;a<colores.length;a++) {
colores[a]=colores[a].split("");
colores[a]=(_h0.indexOf(colores[a][0])*16) + (_h0.indexOf(colores[a][1]));
}
return [ colores[0] , colores[1] , colores[2] ];
}
Código PHP:
function mezclarColores(col1,col2,paso,pasos) {
col1=rgb(col1); r1=col1[0]; g1=col1[1]; b1=col1[2];
col2=rgb(col2); r2=col2[0]; g2=col2[1]; b2=col2[2];
r= ((Math.max(r1,r2)-Math.min(r1,r2)) *paso/pasos ) +Math.min(r1,r2); r=parseInt(r);
g= ((Math.max(g1,g2)-Math.min(g1,g2)) *paso/pasos ) +Math.min(g1,g2); g=parseInt(g);
b= ((Math.max(b1,b2)-Math.min(b1,b2)) *paso/pasos ) +Math.min(b1,b2); b=parseInt(b);
return rrggbb(r,g,b);
}
Código PHP:
c1="#ffffff";
c2="#00ff00";
pasos=10;
for(bucle=0;bucle<=pasos;bucle++) {
colActual=mezclarColores(c1,c2,bucle,pasos);
document.write("<font color='"+colActual+"'>Mezclando en pulso "+bucle+". Actual="+colActual+"</font><br>");
}

Una sugerencia por favor..
