你需要

read this paper.说真的.

除此之外,它可以采用的是使用QColor :: fromHslF(x / * 0.8,0.95,0.5)迭代HSL颜色表示中的色调,其中x在彩虹上从0.0变化到1.0.它根本不是物理上准确的,但也许它会这样做.

否则,您需要一个稍微复杂的代码,它非常简单地接近上面引用的论文.

#include

#include

#include

#include

#include

#include

QColor wavelengthToColor(qreal lambda)

{

// Based on: http://www.efg2.com/Lab/ScienceAndEngineering/Spectra.htm

// The foregoing is based on: http://www.midnightkite.com/color.html

struct Color {

qreal c[3];

QColor toColor(qreal factor) const {

qreal const gamma = 0.8;

int ci[3];

for (int i = 0; i < 3; ++i) {

ci[i] = c[i] == 0.0 ? 0.0 : qRound(255 * pow(c[i] * factor,gamma));

}

return QColor(ci[0],ci[1],ci[2]);

}

} color;

qreal factor = 0.0;

static qreal thresholds[] = { 380,440,490,510,580,645,780 };

for (unsigned int i = 0; i < sizeof(thresholds)/sizeof(thresholds[0]); ++ i) {

using std::swap;

qreal t1 = thresholds[i],t2 = thresholds[i+1];

if (lambda < t1 || lambda >= t2) continue;

if (i%2) swap(t1,t2);

color.c[i % 3] = (i < 5) ? (lambda - t2) / (t1-t2) : 0.0;;

color.c[2-i/2] = 1.0;

factor = 1.0;

break;

}

// Let the intensity fall off near the vision limits

if (lambda >= 380 && lambda < 420) {

factor = 0.3 + 0.7*(lambda-380) / (420 - 380);

}

else if (lambda >= 700 && lambda < 780) {

factor = 0.3 + 0.7*(780 - lambda) / (780 - 700);

}

return color.toColor(factor);

}

QPixmap rainbow(int w,int h)

{

QPixmap pm(w,h);

QPainter p(&pm);

qreal f1 = 1.0/400;

qreal f2 = 1.0/780;

for (int x = 0; x < w; ++ x) {

// Iterate across frequencies,not wavelengths

qreal lambda = 1.0/(f1-(x/qreal(w)*(f1-f2)));

p.setPen(wavelengthToColor(lambda));

p.drawLine(x,x,h);

}

return pm;

}

class RainbowLabel : public QLabel {

protected:

void resizeEvent(QResizeEvent *) {

setPixmap(rainbow(width(),height()));

}

};

int main(int argc,char *argv[])

{

QApplication a(argc,argv);

RainbowLabel l;

l.resize(600,100);

l.show();

return a.exec();

}

编程彩虹c语言,c – 如何渲染彩虹光谱?相关推荐

  1. python用turtle画彩虹_Python语言,绘制彩虹场景

    在生活中,我们总会遇到各种各样的困难,我们都能听到鼓励我们的话,风雨之后才能见彩虹! 今天就和大家分享一下,使用编程代码去绘制我们心中的彩虹! 使用Python语言编程,来绘制彩虹的程序在下面! 彩虹 ...

  2. 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...

    版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...

  3. linux u8 头文件,2019-12-11 转载TCP/IP编程常用C语言头文件

    网络编程的头文件(这里所有的头文件都在/usr/include目录下面) 经常被一些头文件搞大,不知到到哪个头文件去找结构.这里做个总结 ---------------- 版权声明:本文为CSDN博主 ...

  4. 编程入门python语言是多大孩子学的-什么是少儿Python编程?这一篇就够啦!

    原标题:什么是少儿Python编程?这一篇就够啦! 少儿Python编程大家都了解多少呢? 由于少儿编程学习的重要性被广大家长朋友们所知,再加上近几年来我国对少儿编程教育的重视,现在很多的家长朋友们都 ...

  5. Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)

    1.AF_INET域与Socket通信 其是典型的TCP/IP四层模型的通信过程. (1)接收方与发送方依赖IP和port来标识,即,将本地socket绑定到对应的IP端口上: (2)发送数据时指定对 ...

  6. 再谈编程范式-程序语言背后的思想

    link link 编程范式 托马斯.库尔提出"科学的革命"的范式论后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词.编程范式一般包括三个方面,以OOP ...

  7. java编程_Java编程和C语言的比较

    很多人都拿Java编程和c语言相比较,那么今天小编就来先说说个人理解吧,新手学习Java很简单,上手也很容易,只需要会拼音就可以,简单而且没有门槛,而c语言学习成本高,更需要投入较大的精力,才能有一个 ...

  8. 少儿编程几种语言_您使用了几种编程语言?

    少儿编程几种语言 机器说一种语言,但是人类却说多种不同的语言...编程语言,从Python到JavaScript等等. 一切始于Grace Hopper. "该语言中最具破坏力的短语是: 一 ...

  9. 《教孩子编程(Python语言版)》课程介绍

    概述 本课程以<教孩子编程(Python语言版)>该书作为教材.该教材通过科学合理的结构.通俗易懂的文字.活泼有趣的图示,帮助孩子学习计算机的思维方式,而可视化和游戏为主的例子则持续吸引孩 ...

最新文章

  1. python模仿windows文件管理_python – 在Windows中显示文件的资源管理器属性对话框...
  2. php 斗鱼人数,斗鱼旭旭宝宝再度登顶指数榜首位 单日弹幕人数高达48万人
  3. 1)C++对象大小计算
  4. Qt文档阅读笔记-QCompleter官方解析及实例
  5. 科罗拉多大学 C#游戏编程课程总结
  6. python logger_Python:logging 的巧妙设计!
  7. TensorFLow RCNN
  8. 将摄像头拍摄图像或者本地图片设置为头像的方法
  9. CCCC-GPLT L3-014. 周游世界 团体程序设计天梯赛
  10. 计算机一级考试系统改革,以等级考试为导向的大学计算机改革
  11. vc6.0 debug 比 release 快??_全网稀缺的快应用开源项目熊宝儿歌故事QuickApp
  12. 代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
  13. Unity VideoPlayer视频播放器
  14. 【Scratch案例实操】scratch大鱼吃小鱼(完整详案) scratch编程案例教学 scratch创意编程 少儿编程教案
  15. C语言在当代人工智能背景下的作用,人工智能c语言新手入门
  16. bootice.exe linux 启动盘,下载BOOTICE来把你的U盘做成启动盘
  17. 2015年动画电影观影指南
  18. JavaScript将扁平化数据转为树形结构
  19. 图灵 数理逻辑 人工智能 图灵机与计算问题 论文
  20. 卷积码树状图怎么画_卷积码是什么 卷积码编码原理介绍【图文】

热门文章

  1. Makefile之wildcard
  2. android ppt素材,华为ppt素材库
  3. ictclas包 java_ICTCLAS分词系统Java调用接口在Eclipse中的安装
  4. 袋鼠云数据湖平台「DataLake」,存储全量数据,打造数字底座
  5. 鲸探发布点评:8月19日发售《小窗白云与凿山骨》数字藏品
  6. 零基础最详细html和css
  7. 2011版MacBook Air win7安装教程
  8. JavaWeb实用项目之----化妆品销售网
  9. PHP如何实现微信网页授权
  10. Ubuntu后台启动任务,关闭对话窗口不退出