問題:
最大反復回数を使用してマンデルブロ集合を色付けする標準的な方法ズームアウトすると色が不足し、ズームインすると色の飽和が生じます。課題は、さまざまなズーム レベルにわたって幅広い色を維持するカラー スキーム。
解決策:
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); }
結果:
このアプローチは、ヒストグラムベースの色付け、分数反復回数、およびマルチパス再色付けを組み合わせて、鮮やかで鮮明な色付けを実現します。すべてのズーム レベルでのマンデルブロ セットの色彩豊かな表現。
以上がさまざまなズーム レベルにわたってマンデルブロ セットの色の鮮やかさを維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。