栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何动态计算颜色列表?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何动态计算颜色列表?

我的解决方案的另一个版本,范围:

List<int> getUniqueColors(int amount) {    final int lowerLimit = 0x10;    final int upperLimit = 0xE0;        final int colorStep = (upperLimit-lowerLimit)/Math.pow(amount,1f/3);    final List<int> colors = new ArrayList<int>(amount);    for (int R = lowerLimit;R < upperLimit; R+=colorStep)        for (int G = lowerLimit;G < upperLimit; G+=colorStep) for (int B = lowerLimit;B < upperLimit; B+=colorStep) {     if (colors.size() >= amount) { //The calculated step is not very precise, so this safeguard is appropriate         return colors;     } else {         int color = (R<<16)+(G<<8)+(B);         colors.add(color);     }     }    return colors;}

这是一个更高级的功能,因为它会生成彼此之间尽可能不同的颜色(类似于@aiiobe所做的事情)。

通常,我们将范围划分为红色,绿色和蓝色三个子范围,计算我们需要迭代多少步(通过应用pow(range,1f / 3))并对其进行迭代。

例如,给定数字3,它将生成

0x0000B1, 0x00B100, 0x00B1B1
。对于10号,它将是:
0x000076, 0x0000EC,0x007600, 0x007676, 0x0076EC, 0x00EC00, 0x00EC76, 0x00ECEC, 0x760000,0x760076



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/497163.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号