Python中如何围绕Y轴旋转一维分段函数

Python中如何围绕Y轴旋转一维分段函数,python,numpy,matplotlib,rotation,Python,Numpy,Matplotlib,Rotation,我有一个一维分段形状,看起来像一个有光滑边缘的矩形(四分之一圆): 将numpy导入为np 将matplotlib.pyplot作为plt导入 def分段(x、r、d、h): 如果-d/2,什么是“2D圆柱体”?如果你在2D中旋转任何形状,它都会变成一个圆。对不起,我的意思是旋转一个长方形的1D函数来得到一个圆柱体。搜索 import numpy as np import matplotlib.pyplot as plt def piecewise(x, r, d, h): if

我有一个一维分段形状,看起来像一个有光滑边缘的矩形(四分之一圆):

将numpy导入为np
将matplotlib.pyplot作为plt导入
def分段(x、r、d、h):

如果-d/2,什么是“2D圆柱体”?如果你在2D中旋转任何形状,它都会变成一个圆。对不起,我的意思是旋转一个长方形的1D函数来得到一个圆柱体。搜索
import numpy as np
import matplotlib.pyplot as plt 

def piecewise(x, r, d, h):
    if  -d/2 <= x <= - d/2 + r or d/2- r <= x <= d/2:
        return np.sqrt(r**2-(x-np.sign(x)*d/2+np.sign(x)*r)**2)+r+(h-2*r)
    elif -d/2 - r <= x <= -d/2 or d/2 <= x <=  d/2 + r:
        return -np.sqrt(r**2-(x- np.sign(x)*d/2-np.sign(x)*r)**2)+r
    elif - d / 2 + r < x < d / 2 - r:
        return 2*r+(h-2*r)
    return 0.0

vpiecewise = np.vectorize(piecewise)

x = np.linspace(-20, 20, 10000)
z = vpiecewise(x, 4, 20, 10)

plt.plot(x, z, '-')
plt.show()