我正在尝试创建一个不依赖于完美圆形的透明度渐变的函数,而是一个椭圆形,可以是一个完美的圆形,也可以是一个椭圆形。目前我的函数创建了一个正方形,其中包含1/4的圆形渐变,稍后在3个方向上进行镜像以形成圆形。
我的功能定义为:
def _calc_mask(rx, ry): #rx and ry represent the pixels
dx = rx - (width/2) # horizontal center of Grating
dy = ry - (width/2) # vertical center of Grating
t = math.atan2(dy, dx)
r = math.sqrt(dx ** 2 + dy ** 2)
ux = r * math.cos(t)
uy = r * math.sin(t)
f = math.exp(-0.5 * (ux / (self.std_dev*3)) ** 2 - 0.5 *
(uy / (self.std_dev*3)) ** 2)
f = 1.0-f
return 0, 0, 0, f