我需要一个基于变量 return RGBA 值的函数

I need a function to return RGBA values based on a variable

我有一个从 -10 到 10 的变量,并且不断变化。我想要一个 python 函数返回 RGBA 值:

红色:接近-10时,
绿色:接近 10

我自己想不出办法做到这一点,我想过去有人做过类似的事情。

您可以使用像 HSV 这样的颜色表示来做到这一点。您可以将 rgb 颜色最大值 (255, 0, 0) 和最小值 (0, 255, 0) 转换为 HSV (0, 100%, 100%) (120, 100%, 100%)。查看这些,您可以看到只有一个值发生变化,即色调。因此,您可以将范围 -10:10 映射到色调范围 0:120。这可以使用一个非常简单的映射函数来完成:

def map_values(oldValue):
    # this is your range -10:10
    OldRange = (10 - -10)
    # range we are mapping to 0:120
    NewRange = (120 - 0)
    return (((oldValue - -10) * NewRange) / OldRange) + 0

现在您有了色调,可以将其转换为 RGB 值。在 colorsys

中有一个方便的函数
import colorsys
# we need to divide by 360 because this function
# expects a value from 0.0 to 1.0. H has a range from 0 to 360
my_rgb_color = colorsys.hsv_to_rgb(map_values(your_value) / 360.0, 1.0, 1.0)

您可以使用此函数代替导入模块:

def rg(num):
    num = 255 * num // 10
    if num > 0:
        return 255 - num, 255, 0
    return 255, 255 + num, 0

print(rg(-10), rg(0), rg(10))

输出:

(255, 0, 0) (255, 255, 0) (0, 255, 0)