【发布时间】:2019-08-07 18:45:44
【问题描述】:
我想将 0-3 范围内的数字映射到 rgb 颜色。
我看过这样的帖子:Map a range of values (e.g. [0,255]) to a range of colours (e.g. rainbow: [red,blue]) in JavaScript,但我不知道如何将其转换为 python 并在我的情况下使用它。
我希望输出是 0 到 3 之间特定数字的 rgb 值。感谢任何帮助。
【问题讨论】:
我想将 0-3 范围内的数字映射到 rgb 颜色。
我看过这样的帖子:Map a range of values (e.g. [0,255]) to a range of colours (e.g. rainbow: [red,blue]) in JavaScript,但我不知道如何将其转换为 python 并在我的情况下使用它。
我希望输出是 0 到 3 之间特定数字的 rgb 值。感谢任何帮助。
【问题讨论】:
你可以将你链接的帖子中的this answer转换成python:
import math
def num_to_rgb(val, max_val=3):
i = (val * 255 / max_val);
r = round(math.sin(0.024 * i + 0) * 127 + 128);
g = round(math.sin(0.024 * i + 2) * 127 + 128);
b = round(math.sin(0.024 * i + 4) * 127 + 128);
return (r,g,b)
print(num_to_rgb(1.32))
>> (183, 1, 179)
这将返回一个由三个整数 (r,g,b) 组成的元组。
确保不允许无效输入(也称为负数,或 val > max_val)也是一个好主意:
def num_to_rgb(val, max_val=3):
if (val > max_val):
raise ValueError("val must not be greater than max_val")
if (val < 0 or max_val < 0):
raise ValueError("arguments may not be negative")
i = (val * 255 / max_val);
r = round(math.sin(0.024 * i + 0) * 127 + 128);
g = round(math.sin(0.024 * i + 2) * 127 + 128);
b = round(math.sin(0.024 * i + 4) * 127 + 128);
return (r,g,b)
print(num_to_rgb(4.32))
>> ValueError: val must not be greater than max_val
【讨论】: