守夜人誓言:「长夜将至,我从今开始守望,至死方休。我将不娶妻、不封地、不生子。我将不戴宝冠,不争荣宠。我将尽忠职守,生死於斯。我是黑暗中的利剑,长城上的守卫。我是抵御寒冷的烈焰,破晓时分的光线,唤醒眠者的号角,守护王国的坚盾。我将生命与荣耀献给守夜人,今夜如此,夜夜皆然。」
——《权利的游戏》

God said,“Let there be light,” and there was light. 所谓色彩,即光从物体反射到人的眼睛所引起的一种视觉心理感受。计算机就是以光来合成颜色的

绘画者耗费大量的时间混合颜料并在纸上上色。通过长时间的练习,他们才能依靠直觉混合不同颜色而得到一种特别的颜色。在Processing中运用颜色,却是变得uncomplicated

Random Ellipses(20行代码):

Paint Splatter (28行代码):

Spurting Colour(112行代码):

##5.1 基本概念
###5.1.1 加色法与减色法
在计算机上运用颜色不同于在纸上或者画布上。例如:在计算机中,叠加所有颜色得到白色;而在现实中,我们将会得到黑色。

因为:计算机屏幕——加色法模式;纸和画布——减色法模式

倘若你也是一位绘画爱好者,下面这张图片一定能让你豁然开朗。

###5.1.2 设置颜色

The story may be summed up in one sentence——用数字定义颜色

在Processing中,颜色的形式主要包括:灰阶、灰阶含透明度、彩色、彩色含透明度。其设置颜色的函数有:background()、fill()、stroke()

相关语法:

background(rgb)  //彩色
background(rgb, alpha)  //彩色+透明度
background(gray)    //灰阶
background(gray, alpha) //灰阶+透明度
background(v1, v2, v3)  //彩色
background(v1, v2, v3, alpha)   //彩色+透明度fill(rgb)
fill(rgb, alpha)
fill(gray)
fill(gray, alpha)
fill(v1, v2, v3)
fill(v1, v2, v3, alpha)stroke(rgb)
stroke(rgb, alpha)
stroke(gray)
stroke(gray, alpha)
stroke(v1, v2, v3)
stroke(v1, v2, v3, alpha)

Saturation(20行代码):


##5.2 color

color是一种用于存储颜色值的数据类型。在设置颜色的过程中,我们用color()函数来给color变量赋值

color变量创建和赋值:

color c1=color(gray);   //灰阶
color c2=color(gray, alpha);   //灰阶含透明度
color c3=color(v1, v2, v3);    //彩色
color c4=color(v1, v2, v3, alpha); //彩色含透明度

color(gray)用于定义灰度色彩,其中gray的取值在0~255,0代表黑色,255代表白色,共有256个灰度色值;color(gray, alpha)用于定义灰阶含透明度,其中alpha的取值在0~255。

color(v1, v2, v3)用于定义彩色;color(v1, v2, v3, alpha)用于定义彩色含透明度。

如果你还没明白如何使用color,we can give an example to explain it:

size(300,300);
color c1=color(211,24,24,160);
color c2=color(237,159,176);
background(c2);
noStroke();
fill(c1);
rect(125,0,50,300);

运行结果如下:

##5.3 RGB和HSB
RGB和HSB是两种不同的颜色模式。

###RGB模式
RGB色彩模式是通过对**红®、绿(G)、蓝(B)**三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的。

电脑屏幕上的所有颜色,都由这红绿蓝三种色光按照不同的比例混合而成的。一组红色绿色蓝色就是一个最小的显示单位。屏幕上的任何一个颜色都可以由一组RGB值来记录和表达。因此这红色绿色蓝色又称为三原色光,用英文表示就是R(red)、G(green)、B(blue)。

在电脑中,RGB的所谓“多少”就是指亮度,并使用整数来表示。通常情况下,RGB各有256级亮度,用数字表示为从0、1、2…直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级

按照计算,256级的RGB色彩总共能组合出约1678万种色彩,即256×256×256=16777216。通常也被简称为1600万色或千万色

###HSB模式
在HSB模式中,H(hues)表示色相,S(saturation)表示饱和度,B(brightness)表示亮度。

色相(H,hue):在0~360°的标准色轮上,色相是按位置度量的。在通常的使用中,色相是由颜色名称标识的,比如红、绿或橙色。黑色和白色无色相。

饱和度(S,saturation):表示色彩的纯度,为0时为灰色。白、黑和其他灰色色彩都没有饱和度的。在最大饱和度时,每一色相具有最纯的色光。取值范围0~100%

亮度(B,brightness或V,value):是色彩的明亮度。为0时即为黑色。最大亮度是色彩最鲜明的状态。取值范围0~100%

HSB模式中S和B呈现的数值越高,饱和度明度越高,页面色彩强烈艳丽,对视觉刺激是迅速的,醒目的效果。

###模式切换
Processing默认使用RGB,我们可以使用colorMode()来改变颜色模式:

colorMode(mode)  //mode:GRB或者HSB
colorMode(mode, max)    //常用范围为0.0~1.0,以max设置所有颜色组成
colorMode(mode, max1, max2, max3)//RGB,255,255,255;HSB,360,100,100;
colorMode(mode, max1, max2, max3, maxA) //maxA指透明度的最大值

For instance:

noStroke();
colorMode(HSB, 100);
for (int i = 0; i < 100; i++) {for (int j = 0; j < 100; j++) {stroke(i, j, 100);point(i, j);}
}

##5.4 十六进制

十六进制是一个两位的十六进制数(09和AF)来表示0~255的颜色值。所以,RGB可以写成一个六位的十六进制值。另外,当使用十六进制值表示颜色时,你应该在前面加上“#”符号

举个例子:

RGB                  Hex
255,255,255         #FFFFFF

最后附上油漆飞溅效果的源代码:

/*** 油漆飞溅* 出品:维度模态工作室* 作者:Hewes*/void setup() {size(600, 600);background(255);frameRate(30);  //设置帧频colorMode(HSB, 360, 100, 100);  //设置颜色模式
}void draw() {
}//鼠标按下执行的操作
void mousePressed() {pushMatrix();translate(mouseX, mouseY);  //转移坐标float hue = random(360);fill(hue, 100, 100);noStroke();int dropNum = int(map(random(1), 0, 1, 700, 1000));//绘制飞溅的效果for (int i = 0; i < dropNum; i++) {float diameter = pow(random(1), 20);float distance = sq((1.0 - pow(diameter, 2)) * random(1));float scaledDiameter = map(diameter, 0, 1, 1, 30);  //映射范围float scaledDistance = map(distance, 0, 1, 0, 300);float radian = random(TWO_PI);ellipse(scaledDistance * cos(radian), scaledDistance * sin(radian), scaledDiameter, scaledDiameter);}popMatrix();
}

【小白篇】初探 Processing 色彩相关推荐

  1. 拒绝烂图表,Excel商务图表小白篇

    Hi guys,fresh from May day,快收收心来学习吧! 前方预警:此文为excel商务图表小白篇,大能慎入,不喜勿喷! 为什么要学做图表? 工作中,不论是写工作报告,还是统计业绩数据 ...

  2. 《1024伐木累》-小白篇之需求-总章节八

    往期回顾:  丽姐.月侠和老王之间,发生了许多不愉快的事,但最后,老王采用画大饼的策略,成功稳住大家,公司运作也逐渐步入正轨.通过老王的关系,公司与部队达成合作,而刚入公司的耗仔得到老王赏识,成为空军 ...

  3. 小白篇之RTMP编码器辅助OBS实现多个平台推流直播

    小白篇之RTMP编码器辅助OBS实现多个平台推流 大家可能知道OBS默认情况下只能作为RTMP-CLIENT端推流给RTMP-SERVER端,而且只能推给一个平台,虽然网上也有教程教你如何让OBS推流 ...

  4. 《1024伐木累》-小白篇之开发网站,三天!(结束篇)-总章节十三

    往期回顾:  忙到深夜,终于可以休息,三人打闹了一会,就各自去洗漱.刚洗完澡心情有些压抑的耗仔开始向光大人请教研发人员的"升级"之路,光大人耐心给耗仔上了一课.睡眼朦胧中吴博士来敲 ...

  5. 《1024伐木累》-小白篇之开发网站,三天!(中篇-1)-总章节十

    往期回顾:  吴博士开着"破旧"的军车火急火燎的赶来老王科技,接上耗仔三人,便向司令部飞奔而去.晚饭后,一行人来到机房才发现,除了工期紧张,眼前的环境也远比想象中更恶劣. 引子 七 ...

  6. 完全小白篇-使用Python爬取网络小说

    完全小白篇-使用Python爬取网络小说 一.找一个你要爬取的小说 二.分析网页 网页的展示方式 需要用到的库文件 三.向网站发送请求 四.正则提取 五.跳转的逻辑 六.后续处理 七.保存信息进入do ...

  7. 完全小白篇-用python爬取豆瓣电影影评

    完全小白篇-用python爬取豆瓣影评 打开豆瓣电影 随机电影的所有影评网页 跳转逻辑 分析影评内容获取方法 逐一正则提取影评 针对标签格式过于多样的处理 针对提出请求的频率的限制 存储方式(本次sq ...

  8. 小白篇之ENC设备实现USB摄像头转HDMI输出的方法

    小白篇之ENC设备实现USB摄像头转HDMI输出的方法 今天直接进入主题,这个没啥说的,有个客户问我有没有usb转hdmi的设备,答案是肯定的,我们几乎大部分设备都支持,只是今天给大家讲解的是ENC1 ...

  9. Java用于下载Excel模板的接口(小白篇)

    下载Excel模板的接口(最无脑的小白篇) try {//获取要下载的模板名称String fileName = "TemplateDate.xlsx";//设置头文件respon ...

  10. 小白篇之ENC编码器的SRT协议多平台推流配置

    小白篇之ENC编码器的SRT协议多平台推流配置 编码器SRT协议三种模式listener, caller, rendezvous简介 1. 背景 2. SRT的三种握手模式 2.1 握手模式简介 2. ...

最新文章

  1. memcache缓存失效
  2. 如何优雅的使用和理解线程池
  3. selenium 无法定位打开a链接_测试干货 :Selenium8种元素定位法
  4. 【Linux】 iptables vs firewalld
  5. android 怎么获取app 字体颜色,android app 修改字体
  6. hibernate使用二级缓存ehcahe的配置
  7. 【Flink】Flink 流API 和 Table 以及 SQL API是否可以共存
  8. 在jexus下如何简单的配置多站点
  9. 20190906 On Java8 第十八章 字符串
  10. 走心!15年程序员老兵的40条编程技巧,先收藏了!
  11. linux下部署selenium爬虫程序
  12. MapReduce自定义排序、自定义分组、自定义分区
  13. python课程设计小结和体会_通用版课程设计心得体会
  14. 压力变送器matlab,总结压差变送器三种不同故障以及处理方法[理论结合实际]
  15. JavaScript-161:表格全行变色
  16. Android性能优化 -- 自启动管理
  17. tcl/tk学习笔记《二》 tcl/tk概览二
  18. ReferenceError: primordials is not defined错误解决
  19. Nacos 1.0.1 发布,社区一起定义的 Nacos
  20. Java:一般数据结构

热门文章

  1. 明翰英语教学系列之句法篇V0.6(持续更新)
  2. 磨皮,美白,搞笑图片处理
  3. mysql红黑联盟_MySQL在Centos的卸载和安装 - MySQL - 红黑联盟
  4. Django(wsgi,middleware,url源码剖析)
  5. 小熊的十万个为什么?
  6. linux 笔记本sd卡,Linux如何使用笔记本自带的SD/MMC读卡器
  7. 你知道哪些中国学生普遍生疏但意境很美的英语词汇?
  8. android前台服务也被杀,android如何让后台服务service不被杀死(设置前台服务)
  9. pycharm如何正确打包ocr且让打包出来的exe尽量小
  10. 目标检测数据集PASCAL VOC详解