我想我应该发布这个问题,即使我已经找到了解决方案,因为当我搜索它时 Java 实现并不容易获得。
使用 HSV 而不是 RGB 可以生成具有相同饱和度和亮度的颜色(这是我想要的)。
Google App Engine 不允许使用 java.awt.Color,因此不能执行以下操作在 HSV 和 RGB 之间进行转换:
Color c = Color.getHSBColor(hue, saturation, value);
String rgb = Integer.toHexString(c.getRGB());
编辑:我按照 Nick Johnson 的评论中的描述移动了我的答案。
Ex animo, - 亚历山大。
原文由 yngling 发布,翻译遵循 CC BY-SA 4.0 许可协议
我对颜色数学一无所知,但我可以为代码提供这种替代结构,这让我觉得很有趣,因为它让我很清楚这 6 种情况中的每一种都是值 t 和 p 的不同排列. (此外,我对长 if-else 链有一种非理性的恐惧。)