def find_color_value(dist, r):
#dist is a 2D vector with magnitude smaller than 1, r is its manitude
#representing a position inside the color wheel
angle = np.arctan2(dist[0], dist[1])
color = np.array([0.0, 0.0, 0.0])
if angle >= 0 and angle <= 2.0 * np.pi / 3.0:
scale = angle * 3.0 / (2.0 * np.pi)
color[0] = 1.0 - scale
color[1] = scale
if angle > 2.0 * np.pi / 3.0:
scale = (angle - 2.0 * np.pi / 3.0) * 3.0 / (2.0 * np.pi)
color[1] = 1.0 - scale
color[2] = scale
if angle < -2.0 * np.pi / 3.0:
real_angle = angle + 2.0 * np.pi
scale = (real_angle - 2.0 * np.pi / 3.0) * 3.0 / (2.0 * np.pi)
color[1] = 1.0 - scale
color[2] = scale
if angle < 0 and angle >= -2.0 * np.pi / 3.0:
real_angle = angle + 2.0 * np.pi
scale = (real_angle - 4.0 * np.pi / 3.0) * 3.0 / (2.0 * np.pi)
color[2] = 1.0 - scale
color[0] = scale
color *= r ** 0.25
return color
#transform(TypeSpecialize(checks=False))
评论列表
文章目录