ホームページ > Java > &#&チュートリアル > さまざまなズーム レベルにわたってマンデルブロ セットの色の鮮やかさを維持するにはどうすればよいですか?

さまざまなズーム レベルにわたってマンデルブロ セットの色の鮮やかさを維持するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-03 14:17:02
オリジナル
336 人が閲覧しました

How to Maintain Color Vibrancy in the Mandelbrot Set Across Different Zoom Levels?

広範囲のズームに対するマンデルブロ集合の色付け

問題:
最大反復回数を使用してマンデルブロ集合を色付けする標準的な方法ズームアウトすると色が不足し、ズームインすると色の飽和が生じます。課題は、さまざまなズーム レベルにわたって幅広い色を維持するカラー スキーム。

解決策:

1.ヒストグラムベースのカラー マッピング:

  • 未使用のインデックスで色を無駄にするのではなく、ヒストグラムを使用してカラー グラデーションをより効果的に分配します。
  • 次のような視覚的に心地よいグラデーション関数を採用します。目に見えるもののRGB値スペクトル。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート