LoginSignup
13
12

More than 5 years have passed since last update.

gnuplot でおっぱい

Last updated at Posted at 2014-11-19

発端

twitter を眺めていたら以下のツイートを発見しました.

Mathematica で美しいおっぱいを再現したもので大変素晴らしい完成度です.しかし,このままではこの素晴らしいおっぱいを堪能するために Mathematica が必要です.Mathematica は大変素晴らしいソフトですが高価でもあります.おっぱいを堪能するために Mathematica を購入するわけにはいかないでしょう.この素晴らしいおっぱいをより多くの方に堪能してもらうため,このプロットを gnuplot で再現することを決めました.

おっぱいプロットの作成

幸いなことに発端となったツイートの画像には数式とプロットすべき範囲が記述してありました.そこで,この式をそのまま使わせてもらうことにしました.しかしながら,Mathematica では surface のライティングを設定できるのに対して僕が使用する gnuplot-4.6 にはそのような機能はついていません.そこで palette を微調整して z 方向の高さで色を付けることにしました.そうして作成したスクリプトがこちらです.

oppai.gp
#!/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 に与えている詳細なパラメタは環境に依存してしまうかもしれません.

pi.png

WXT terminal での 3D プロットなので自在に動かすこともできます. gif 動画をはてなフォトライフにアップロードしたので参考にしてください.

参考資料

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12