0
0

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 2025-04-08

pythonで、「おしり曲面」を描画します。
おっぱい曲面の方程式の自然対数を取ると、尻のような形状の曲面になります。今、「尻」という下品な言葉を使ってしまいましたが、「お尻」とすると上品に、「おみ尻」とすると更に上品に、「おみお尻」とするとますます上品になってくるでしょう。

pyqt5と、openglのインストールが必要です。

出典は以下より。

コード

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

oshiri.py
from PyQt5.QtWidgets import QApplication,QWidget
import pyqtgraph.opengl as gl
from math import * 

def bust(x,y):
    return 1/8* (6*exp(-((2/3*abs(x) - 1)**2 + (2/3 *y)**2) - 1/3*(2/3*y + 1/2)**3)+ 2/3 *exp(-2.818**11*((abs(2/3*x) - 1)**2+ (2/3 *y)**2)**2) + 2/3*y - (2/3*x)**4)

def draw_oshiri(x, y, distance,pxl=2):

    app = QApplication([])
    w = gl.GLViewWidget()
    w.resize(600,400)
    w.opts['distance'] = distance
    w.show()
    w.setWindowTitle('Oshiri')

    p=[ [ xp,yp,log(abs(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_oshiri(x,y,10,pxl=2)

if __name__=='__main__':
    main()

ただ、おっぱい曲面の自然対数を取るだけでは関数のドメインエラーが出てしまうので、まず絶対値(abs)を取ることが必要でした。負の数の自然対数は取れないので。

実行結果

screenshot-2025-04-01 22-44-43.png

おしりに見えなくもないが、ちょっと違いますね。まあこんなものでしょう。

僕の使っていいよ。

下品なことを書いてしまいましたが、改心するので、ちょっと待っててください。お許しを。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?