0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonで、おっぱい曲面を描画

Last updated at Posted at 2024-12-16

@akimiyoshiさんの、「おっぱい曲面」を3Dグラフで描くを元に作りました。All pythonです。

元記事はJuliaで座標計算をして、python2のスクリプトを呼び出して描画していますが、連携ができるJuliaとpythonのバージョンは限られているので、python3で書き直しました。面倒くさいディレクトリ調整などは要らず、python3とpyqtが動く環境ならどこでも動くと思います。リスト内包表記に対応しています。

Juliaとpythonの座標計算の結果が違っていたので、Geminiに聞いてみると、Juliaに較べてPythonは精度が劣るようなイメージがありますが、実用上そのようなことはないとのことです。でも、念を入れて、mpmathを使って、40桁の精度の計算をしています。

python oppai.pyで実行してください。

oppai.py
from PyQt5.QtWidgets import QApplication,QWidget
import pyqtgraph.opengl as gl
from mpmath import mp

mp.depth=40

def bust(xx,yy):
    x=mp.mpf(xx)
    y=mp.mpf(yy)
    return mp.mpf('1')/mp.mpf('8')* (mp.mpf('6')*mp.exp(-((mp.mpf('2')/mp.mpf('3')*mp.fabs(x) - mp.mpf('1'))**mp.mpf('2') + (mp.mpf('2')/mp.mpf('3') *y)**mp.mpf('2')) - mp.mpf('1')/mp.mpf('3')*(mp.mpf('2')/mp.mpf('3')*y + mp.mpf('1')/mp.mpf('2'))**mp.mpf('3'))+ mp.mpf('2')/mp.mpf('3') *mp.exp(mp.mpf('-2.818')**mp.mpf('11')*((mp.fabs(mp.mpf('2')/mp.mpf('3')*x) - mp.mpf('1'))**mp.mpf('2')+ (mp.mpf('2')/mp.mpf('3') *y)**mp.mpf('2'))**mp.mpf('2')) + mp.mpf('2')/mp.mpf('3')*y - (mp.mpf('2')/mp.mpf('3')*x)**mp.mpf('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()

実行結果

スクリーンショット_2024-12-17_18-10-44.png

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?