Utilizando el algoritmo de coloración de estimación de distancia aprendido de aquí pude colorear Conjuntos de Julia proyectados sobre una esfera de Riemann, como con este vídeo. Sin embargo, una vez que empecé a mostrar matrices polinómicas de los Conjuntos de Julia Al utilizar este algoritmo de coloreado se obtienen resultados incoherentes, como se muestra en la primera imagen. Ciertas partes son más claras que otras, y esto se debe a que el apareamiento polinómico saca a la luz partes más profundas del fractal sin ampliar Por eso, al utilizar el mismo ajuste de distancia, las partes ampliadas quedan más "borrosas" que el resto.
Por lo tanto, lo que creo que necesito es algún tipo de algoritmo para detectar cómo "zoom" estoy en el conjunto de Julia, así que puedo ajustar la distancia en consecuencia. Intenté basarme en el número de iteraciones que tarda la órbita en escapar (cuanto más profundo, más iteraciones tarda la órbita en escapar), pero no conseguí el efecto deseado (segunda imagen de abajo - algunas partes son apenas visibles). Aquí está mi código para la coloración:
for (iter = currentMatingIteration + 1; iter < maxIterations && (w.x * w.x + w.y * w.y < bailout*bailout); iter++)
{
d2 *= 4.0 * w2;
// Julia Set algorithm
w = c_2(w) + c;
w2 = w.x * w.x + w.y * w.y;
// Distance checker
if(w2 > maxDist)
break;
}
float fineness = 7; // the higher, the less "blurry"
//float fineness = 15; // this is used for the second picture below
float d = sqrt(w2 / d2) * log(w2); // this is the distance estimation
float dist = clamp(sqrt(d * pow(fineness, 2)), 0, 1); // this is the adjustments I make for coloring
//float dist = clamp(sqrt(d * pow(fineness * (float(iter) / maxIterations), 2)), 0, 1); // This is my attempt to solve this problem, used in the second picture below
Mi proyecto es aquí para las pruebas.
Edita:
Si bien esto probablemente no es una solución general para averiguar cómo profundamente zoom uno es, lo que funcionó para este problema es el cálculo de la derivada durante el pull-back parte del algoritmo de apareamiento, y el uso de ese como el valor inicial para el cálculo de la estimación de la distancia para cada Julia Set (gracias a Claude en los comentarios). El resultado es el siguiente: