質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

GLSL

GLSL (OpenGL Shading Language) はC言語をベースとしたシェーディング言語です。

Q&A

解決済

1回答

1880閲覧

シェーダ(マンデルブロ集合)について

seri

総合スコア422

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

GLSL

GLSL (OpenGL Shading Language) はC言語をベースとしたシェーディング言語です。

0グッド

0クリップ

投稿2016/04/09 20:56

編集2016/04/09 20:57

以下GLSLスクリプトはhttps://wgld.org/d/glsl/g005.htmlから引用させていただきました。
ちなみに、マンデルブロ集合の式は

Zn+1=Zn^2+C Z0=0

そこで、以下のスクリプト内で、 (★部分)z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + x + y
とゆう式がありますが、この式があまり理解できません。。
なんとなく、Znの二乗をしてるのかな?とゆう解釈です

Znの二乗をするのであれば、
Zn^2=z.x^2+(2z.xz.y)+z.y^2
となるはずです。
vec2のy値部分 2.0 * z.x * z.yは、**(2z.xz.y)だろうなあと、理解できるのですが
vec2のx値、
z.x * z.x - z.y * z.y**は何故マイナスなのでしょうか、、、?

GLSL

1precision mediump float; 2uniform float time; 3uniform vec2 mouse; 4uniform vec2 resolution; 5 6vec3 hsv(float h, float s, float v){ 7 vec4 t = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); 8 vec3 p = abs(fract(vec3(h) + t.xyz) * 6.0 - vec3(t.w)); 9 return v * mix(vec3(t.x), clamp(p - vec3(t.x), 0.0, 1.0), s); 10} 11 12void main(void){ 13 vec2 m = vec2(mouse.x * 2.0 - 1.0, -mouse.y * 2.0 + 1.0); 14 vec2 p = (gl_FragCoord.xy * 2.0 - resolution) / min(resolution.x, resolution.y); 15 16 int j = 0; 17 vec2 x = vec2(-0.345, 0.654); 18 vec2 y = vec2(time * 0.005, 0.0); 19 vec2 z = p; 20 for(int i = 0; i < 360; i++){ 21 j++; 22 if(length(z) > 2.0){break;} 23//★★★★★★★★ 24 z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + x + y; 25//★★★★★★★★ 26 } 27 28 float h = abs(mod(time * 15.0 - float(j), 360.0) / 360.0);; 29 vec3 rgb = hsv(h, 1.0, 1.0); 30 gl_FragColor = vec4(rgb, 1.0); 31 32}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

シェーダはよくわからないのですが、
マンデルブロ集合は複素平面での集合であったと記憶にあります。

なので、単に複素平面でのy座標(i)を2乗したら負になるというだけかと。

Zn^2=z.x^2+(2z.xz.y)+z.y^2

ではなく

Zn^2=(z.x + z.y**i)^2 = z.x^2 + (2z.xz.y)i** - z.y^2

と解釈できるのではと思います。

投稿2016/04/09 21:52

M_Norihiro

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問