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-19

おっぱい曲面を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()

実行結果

スクリーンショット_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?