【问题标题】:How to map a range of integers to a colour space?如何将一系列整数映射到颜色空间?
【发布时间】:2012-09-21 02:52:48
【问题描述】:

我需要将一系列正整数(例如 1 - 15'000)映射到颜色空间,以使最小值为绿色,最大值为红色。 IE。我需要一个算法,我可以给出一个整数(也许是最小值,最大值)作为输入,并接收一个 RGB 值作为输出。

我知道离散色彩空间的可能性,但我更喜欢不需要的解决方案。

【问题讨论】:

  • 我很确定像您想要的映射定义为离散色彩空间(或色彩空间的子空间)。你为什么要避免你试图完成的同样的事情?
  • @zmbq 离散我的意思是将颜色空间划分为固定数量的颜色,例如n RGB 值,然后将实际范围映射到该值,例如像这样:1 + ((value - realMin) / (realMax - realMin)) * n)。但也许我用了“不正确”这个词,我英语不流利。
  • 你会像渐变刻度一样使用它吗?如果是,也许您需要使用黄色作为“中间点”。

标签: algorithm colors


【解决方案1】:

这应该让你开始:

 ​function getColourFromInt(int){
      var num = Math.abs(int);

      var b2 = Math.floor(num % 16);
      var temp = num / 16;

      var b1 = Math.floor(temp % 16);
      var temp2 = temp / 16;

      var g2 = Math.floor(temp2 % 16);
      var temp3 = temp2 / 16;

      var g1 = Math.floor(temp3 % 16);
      var temp4 = temp3 / 16;

      var r2 = Math.floor(temp4 % 16);
      var temp5 = temp4 / 16;

      var r1 = Math.floor(temp5 % 16);

     var values = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]

     r1 = values[r1]
     r2 = values[r2]
     g1 = values[g1]
     g2 = values[g2]
     b1 = values[b1]
     b2 = values[b2]

     var rgb = r1 + r2 + g1 + g2 + b1 + b2;

     document.getElementById('colour').innerHTML = rgb;

 }

 getColourFromInt(Math.floor(Math.random() * 16*16*16*16*16*16))​

http://jsfiddle.net/pxSMb/

【讨论】:

    猜你喜欢
    • 2016-12-19
    • 2012-03-19
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2020-01-04
    • 2016-02-01
    相关资源
    最近更新 更多