【问题标题】:drawing rainbow palettes画彩虹调色板
【发布时间】:2011-03-12 20:24:38
【问题描述】:

我有一个 8 位调色板,因此我有 256 种颜色。

调色板基本上是 [256 * 3] {r, g, b} 值的数组,现在我需要从中绘制色谱。所以基本上我必须从所有可能的256*256*256 值中选择 256 个,这将使我能够尽可能接近地绘制彩虹。

此处关于 SO 的类似问题指向基于 HSV 的方法,但我正在寻找一种 RGB 实现,因为我已经以这种方式定义了 API。

非常感谢任何帮助。

【问题讨论】:

  • HSV 是为您拥有的每个 HSV 值转换为 RGB 的方法。
  • 其实,HSL 也可以。

标签: c++ color-palette


【解决方案1】:

HSV 解决方案仍然是正确的,因为它几乎可以捕捉到您的问题。根据定义,“彩虹”是一系列具有恒定 S 和 V,但 H 变化的颜色。

【讨论】:

  • 是的,使用正确的颜色模型来满足您的需求,然后进行转换。
  • 您能否详细说明如何将色调从 0 到 360 变化以生成 256 种颜色
  • “色调”不一定是整数。将其存储在double 中,并以 (360.0/256.0) 为步长递增。您当然会得到 R、G 和 B 的 double 值。当您将颜色放入调色板时将它们四舍五入,而不是更早。
【解决方案2】:

使用 HSV 确实是最简单的,因为无论如何你最终都会实现它。保持 S 和 V 不变(都为 1),让 H 在 0° 到 360° 之间变化。

Wikipedia 上描述了将 HSV 转换为 RGB 的方法。

【讨论】:

  • 从 0 到 360 变化?我只有 256 种颜色?
  • 色相通常以度数来衡量,在色轮上。您可以使用 0..255、0..1 或 0%..100%,只要相应地对方程进行归一化即可。
猜你喜欢
  • 1970-01-01
  • 2018-05-31
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多