発端
twitter を眺めていたら以下のツイートを発見しました.
某工大の叡智の結集 pic.twitter.com/TBhRfTsNrn
— T s u z u k i (@ttzux19) November 4, 2014
Mathematica
で美しいおっぱいを再現したもので大変素晴らしい完成度です.しかし,このままではこの素晴らしいおっぱいを堪能するために Mathematica
が必要です.Mathematica
は大変素晴らしいソフトですが高価でもあります.おっぱいを堪能するために Mathematica
を購入するわけにはいかないでしょう.この素晴らしいおっぱいをより多くの方に堪能してもらうため,このプロットを gnuplot
で再現することを決めました.
おっぱいプロットの作成
幸いなことに発端となったツイートの画像には数式とプロットすべき範囲が記述してありました.そこで,この式をそのまま使わせてもらうことにしました.しかしながら,Mathematica
では surface のライティングを設定できるのに対して僕が使用する gnuplot-4.6
にはそのような機能はついていません.そこで palette を微調整して z 方向の高さで色を付けることにしました.そうして作成したスクリプトがこちらです.
#!/usr/local/bin/gnuplot -persist
set terminal wxt 0 enhanced font ",24"
unset key
set view 53, 317, 1, 1
set isosamples 60, 60
set title "{/Symbol p} in gnuplot"
set title offset character 0, 0, 0 font "" norotate
set xrange [ -2.5 : 2.5 ]
set yrange [ -2.5 : 2.5 ]
set xtics format ""
set ytics format ""
set ztics format ""
set cbtics format ""
set palette define (-1 '#d66939', 0.4 '#eecdc0', 0.6 "#f4dfcf", 1 'red')
set hidden3d
func(x,y) = 1./8.*( \
3./2.*exp(-exp(10)*(4*y**2/9.+(2*abs(x)/3.-1)**2)**2) \
+ exp(-(exp(1)*(4*y**2/9.+(2*abs(x)/3.-1)**2)**2)) \
+ 8*exp(-1./9.*4*y**2-1./3.*(2*y/3.+0.5)**3 - (2*abs(x)/3.-1)**2) \
+ 5*y/3. - 16*x**4/81. )
splot func(x,y) w pm3d t "{/Symbol p}"
# EOF
このスクリプトは Ubuntu 14.04 でコンパイルした gnuplot-4.6 patch 6
で実行することを念頭に入れて作成しました.もしかしたら palette に与えている詳細なパラメタは環境に依存してしまうかもしれません.
WXT terminal での 3D プロットなので自在に動かすこともできます. gif 動画をはてなフォトライフにアップロードしたので参考にしてください.