#お酒飲みながら描いた、後悔はしてない
数学って美しいよねって話。
【2020年7月16日更新】
規制に引っかかっちゃったんでOPPAI、new輪、ティ首に変更
##コード
###数学でOPPAIを書きます
import numpy as np
import matplotlib.pyplot as plt
def oppai(y):
x_1 = (1.5*np.exp(-0.62*(y-0.16)**2))/(1+np.exp(-20*(5*y-1)))
x_2 = (1.5+0.8*(y-0.2)**3)*(1+np.exp(20*(5*y-1)))**-1
x_3 = (1+np.exp(-(100*(y+1)-16)))
x_4 = (0.2*(np.exp(-(y+1)**2)+1))/(1+np.exp(100*(y+1)-16))
x_5 = (0.1/np.exp(2*(10*y-1.2)**4))
x = x_1+(x_2/x_3)+x_4+x_5
return x
def plot_oppai(x, y):
plt.title('oppai')
plt.axes().set_aspect('equal', 'datalim')
plt.grid()
plt.plot(x, y, 'black')
plt.show()
def main():
y = np.arange(-3, 3 + 0.01, 0.01)
x = oppai(y)
plot_oppai(x, y)
if __name__ == '__main__':
main()
###良さげな画像からカラーコードを取得します
ここに良さげな画像をアップロード(例:kirara.png)
https://www.peko-step.com/tool/getcolor.html
カラーコードを取得
肌色:#F5D1B7
ティ首:#C87B6D
new輪:#E29577
###色をつけます
oppaiを弄るだけです。
def plot_oppai(x, y):
plt.title('oppai')
plt.axes().set_aspect('equal', 'datalim')
plt.grid()
plt.plot(x, y, '#F5D1B7')
plt.fill_between(x, y, facecolor='#F5D1B7', alpha=0.8)#肌
plt.axvspan(1.52, 1.59, 0.51, 0.53, color = '#C87B6D')#ティ首
plt.axvspan(0, 0.18, 0.05, 0.5, color = '#F5D1B7')#補正
plt.show()
###new輪を描いて完成
こいつもoppaiを弄るだけです。
import matplotlib.patches as patches
def plot_oppai(x, y):
plt.title('oppai')
plt.axes().set_aspect('equal', 'datalim')
plt.grid()
plt.plot(x, y, '#F5D1B7')
plt.fill_between(x, y, facecolor='#F5D1B7', alpha=0.8)#肌
w=patches.Wedge(center=(1.55, 0.1),r=0.2,theta1=120,theta2=240,color='#E29577')#new輪
ax = plt.axes()
ax.add_patch(w)
plt.axvspan(1.52, 1.59, 0.51, 0.53, color = '#C87B6D')#ティ首
plt.axvspan(0, 0.18, 0.05, 0.5, color = '#F5D1B7')#補正
plt.show()
###最終的なコード
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
def oppai(y):
x_1 = (1.5*np.exp(-0.62*(y-0.16)**2))/(1+np.exp(-20*(5*y-1)))
x_2 = (1.5+0.8*(y-0.2)**3)*(1+np.exp(20*(5*y-1)))**-1
x_3 = (1+np.exp(-(100*(y+1)-16)))
x_4 = (0.2*(np.exp(-(y+1)**2)+1))/(1+np.exp(100*(y+1)-16))
x_5 = (0.1/np.exp(2*(10*y-1.2)**4))
x = x_1+(x_2/x_3)+x_4+x_5
return x
def plot_oppai(x, y):
plt.title('oppai')
plt.axes().set_aspect('equal', 'datalim')
plt.grid()
plt.plot(x, y, '#F5D1B7')
plt.fill_between(x, y, facecolor='#F5D1B7', alpha=0.8)#肌色
w=patches.Wedge(center=(1.55,0.1),r=0.2,theta1=120,theta2=240,color='#E29577')#new輪
ax = plt.axes()
ax.add_patch(w)
plt.axvspan(1.52, 1.59, 0.51, 0.53, color = '#C87B6D')#ティ首
plt.axvspan(0, 0.18, 0.05, 0.5, color = '#F5D1B7')#補正
plt.show()
def main():
y = np.arange(-3, 3 + 0.01, 0.01)
x = oppai(y)
plot_oppai(x, y)
if __name__ == '__main__':
main()
##まとめ
数学って美しい
ティ首もnew輪も、好きな色に変えて遊んでくだせぇ
ピンクのティ首が好きって人はLGTMを、いやいや、黒いティ首の方が興奮するやろって人はフォローお願いします
##参考
・これのおかげ
Matplotlib&Seaborn実装ハンドブック (Pythonライブラリ定番セレクション)
・私のバイブル
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[固定版] 脆弱性が生まれる原理と対策の実践
・全国の一流インテグラーが創造したOPPAI関数をPythonで再現してみた
[・指定範囲を塗り潰す関数]
(https://python.atelierkobato.com/fill_between/)