clear; // *** ジバニャン方程式の定義 *** function z = jibanyan_equation(x,y) z = min(max(min(1 - (x ./ 108) .^ 2 - (y ./ 94) .^ 2,y),min(1 - ((abs(x) - 119) ./ 103) .^ 2 - ((y - 56) ./ 86) .^ 2,1 - ((abs(x) - 15) ./ 77) .^ 2 - ((y - 119) ./ 100) .^ 2),1 - ((abs(x) - 42) ./ 66) .^ 2 - (y ./ 55) .^ 2,min(55 + y,51 - abs(x), - y)),3 .* abs(y - 100) - 2 .* (x - 75)) .* .. min(min(max(min(1 - (x ./ 106) .^ 2 - (y ./ 92) .^ 2,y),min(1 - ((abs(x) - 119) ./ 101) .^ 2 - ((y - 56) ./ 84) .^ 2,((abs(x) - 99) ./ 40) .^ 2 + ((y - 54) ./ 86) .^ 2 - 1,92 - abs(x)),1 - ((abs(x) - 42) ./ 64) .^ 2 - (y ./ 53) .^ 2),min(((abs(x) - 52) ./ 26) .^ 2 + ((y + 28) ./ 26) .^ 2 - 1,((abs(x) - 51) ./ 13) .^ 2 + (y ./ 13) .^ 2 - 1,max(abs(x) - 51,y))),abs(x ./ 51 + 10 ./ 51 .* sin(abs(y ./ 61.2) .^ (1.2) .* %pi .* (7 ./ 2))) .^ (2 ./ 3) + abs(y ./ 61.2) .^ (2 ./ 3) - 1) .* .. min(1 - (x ./ 32) .^ 2 - ((y + 30) ./ 32) .^ 2,1 - ((abs(x) + 5) ./ 22) .^ 2 - ((y - 18) ./ 22) .^ 2) .* .. min(1 - ((abs(x) - 18) ./ 20) .^ 2 - ((y + 10) ./ 20) .^ 2,((abs(x) - 20) ./ 22) .^ 2 + ((y + 7) ./ 20) .^ 2 - 1) .* .. (1 - ((abs(x) - 51) ./ 11) .^ 2 - (y ./ 11) .^ 2) endfunction // *** ジバニャン方程式の計算 *** // 描画領域の作成 x = linspace(-150,150,400); y = linspace(-150,150,400); [X,Y] = ndgrid(x,y); Z = jibanyan_equation(X,Y); // *** ジバニャンの描画 *** xset("fpf"," "); // 等高線に値を表示しない contour2d(x,y,Z,[0,0]); // Z=0の等高線をプロット