おっぱい曲面を3Dで描画してみました。
@akmiyoshiさんの「『おっぱい曲面を3Dでグラフで描く(1)」を元にしています。
元記事はJuliaで座標計算をし、python2でプロットしていますが、連携できるPythonとJuliaのバージョンが限られているため、all python3で書き直しました。Juliaに比べてPythonは数値計算の精度が劣るようなイメージがありますが、実用上そんなことはありません。python3とPyqtが動く環境ならどこでも動くと思います。面倒くさいディレクトリ調整などいりません。
実行は、python oppai.py
で動かしてください。
oppai.py
from PyQt5.QtWidgets import QApplication,QWidget
import pyqtgraph.opengl as gl
from mpmath import *
def bust(x,y):
return 1/8* (6*exp(-((2/3*fabs(x) - 1)**2 + (2/3 *y)**2) - 1/3*(2/3*y + 1/2)**3)+ 2/3 *exp(-2.818**11*((fabs(2/3*x) - 1)**2+ (2/3 *y)**2)**2) + 2/3*y - (2/3*x)**4)
def draw_oppai(x, y, distance,pxl=2):
app = QApplication([])
w = gl.GLViewWidget()
w.resize(600,400)
w.opts['distance'] = distance
w.show()
w.setWindowTitle('Oppai')
p=[ [ xp,yp,bust(xp,yp)] for xp in x for yp in y]
plt=gl.GLScatterPlotItem(pos=p,color=(1,1,1,1),size=pxl)
w.addItem(plt)
app.exec_()
def linspace(a,b,n):
return [ a+i*((b-a)/n) for i in range(n+1)]
def main():
nx=100
ny=50
x=linspace(-3.0,3.0,nx)
y=linspace(-3.0,3.0,ny)
draw_oppai(x,y,10,pxl=2)
if __name__=='__main__':
main()