문제:
최대 반복을 사용하여 만델브로 집합을 색칠하는 표준 방법 축소하면 색상이 부족하고 확대하면 색상이 과포화됩니다. 문제는 다양한 확대/축소 수준에서 다양한 색상을 유지하는 색상 구성표를 만드는 것입니다.
해결책:
1. 히스토그램 기반 색상 매핑:
2. 분수 반복 횟수(만델브로 이스케이프):
추가 개선 사항:
구현 예:
// Vertex Shader layout(location = 0) in vec2 pos; out vec2 p; void main() { p = pos; gl_Position = vec4(pos, 0.0, 1.0); } // Fragment Shader uniform vec2 p0; uniform float zoom; uniform int n; uniform int sh; uniform int multipass; in vec2 p; out vec4 col; // Compute fractional iteration count float mu = m + frac = n + 1 - log(log(sqrt(xx + yy)) / log(2.0)); mu *= float(1 << sh); int i = int(mu); // Multi-pass coloring if (multipass != 0) { // Quantize color based on iterations float r = (i >> 0) & 255; r /= 255.0; float g = (i >> 8) & 255; g /= 255.0; float b = (i >> 16) & 255; b /= 255.0; col = vec4(r, g, b, 255); } // Visible spectrum color gradient else { float q = float(i) / float(N); q = pow(q, 0.2); col = vec4(spectral_color(400.0 + (300.0 * q)), 1.0); }
결과:
이 접근 방식은 히스토그램 기반 색상 지정, 분수 반복 횟수 및 다중 패스 다시 색상 지정을 결합하여 생생하고 색상이 풍부한 표현을 얻습니다. Mandelbrot는 모든 확대/축소 수준에서 설정됩니다.
위 내용은 다양한 확대/축소 수준에서 Mandelbrot 세트의 색상 선명도를 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!