关于hsv_to_rgb转换结果不符的技术问询——Turtle程序颜色渐变问题
问题根源
Python标准库colorsys里的hsv_to_rgb函数,对H(色相)参数的要求是0.0到1.0之间的浮点数,对应色相环的0°到360°。你的代码错误地把角度转成弧度后再除以10,完全偏离了H参数的合法范围,导致颜色转换结果和预期不符。
解决方案
直接把角度值除以360,将色相转换为0-1之间的比例值,不需要做弧度转换。
修正后的y=2代码
from colorsys import hsv_to_rgb x = 0 y = 2 for j in range(y): h = x / 360 # 转成0-1的色相比例 print(h, 1, 1) print(hsv_to_rgb(h, 1, 1)) x += 360 / y x = 0
输出结果
0.0 1 1 (1, 0.0, 0.0) 0.5 1 1 (0.0, 1.0, 1.0)
修正后的y=3代码
from colorsys import hsv_to_rgb x = 0 y = 3 for j in range(y): h = x / 360 # 转成0-1的色相比例 print(h, 1, 1) print(hsv_to_rgb(h, 1, 1)) x += 360 / y x = 0
输出结果
0.0 1 1 (1, 0.0, 0.0) 0.3333333333333333 1 1 (0.0, 1.0, 0.0) 0.6666666666666666 1 1 (0.0, 0.0, 1.0)
额外说明
如果后续需要用弧度计算色相,记得把弧度值转换成0-1的比例:用弧度值除以2 * π(2π弧度对应360°),和直接用角度除以360的效果完全一致,示例代码如下:
from math import pi, radians h = radians(x) / (2 * pi)
内容的提问来源于stack exchange,提问作者Rose Murphy
相关产品推荐
相关产品推荐

