def getCoonsPatchPointBez(bounds,x,y,width,height, densities = None):
p00 = np.array(interpolate.splev( 0.0,bounds['s_top'])).flatten()
p10 = np.array(interpolate.splev( 1.0,bounds['s_top'])).flatten()
p11 = np.array(interpolate.splev( 0.0,bounds['s_bottom'])).flatten()
p01 = np.array(interpolate.splev( 1.0,bounds['s_bottom'])).flatten()
u = 1.0 * x / (width-1)
v = 1.0 * y / (height-1)
iu = 1.0 - u
iv = 1.0 - v
if densities is None:
pu0 = np.array(interpolate.splev( u,bounds['s_top'])).flatten()
pu1 = np.array(interpolate.splev(iu,bounds['s_bottom'])).flatten()
pv0 = np.array(interpolate.splev(iv,bounds['s_left'])).flatten()
pv1 = np.array(interpolate.splev( v,bounds['s_right'])).flatten()
else:
ut = 0.0
ub = 0.0
for i in range(x):
ut+=densities['top'][i]
ub+=densities['bottom'][i]
vl = 0.0
vr = 0.0
for i in range(y):
vl+=densities['left'][i]
vr+=densities['right'][i]
pu0 = np.array(interpolate.splev( ut,bounds['s_top'])).flatten()
pu1 = np.array(interpolate.splev(1.0-ub,bounds['s_bottom'])).flatten()
pv0 = np.array(interpolate.splev(1-0-vl,bounds['s_left'])).flatten()
pv1 = np.array(interpolate.splev( vr,bounds['s_right'])).flatten()
return iv * pu0 + v * pu1 + iu * pv0 + u * pv1 - iu * iv * p00 - u * iv * p10 - iu * v * p01 - u * v * p11
评论列表
文章目录