日更第13期-2015-4-9-processing教程-API篇-第二讲-lerpColor()、nfp()、

于是隔了十天来更新了。然后今天更新的是Processing的api,其实这算是我学习Processing途中的一种副产品;反正凑够数了,

我今天就拿出来看看。其实只是api文档的话,并没有什么存在的必要性。但如果只是讨论存在的必要性的话,我的博客本身也没有

存在的必要性。比较也没有记载什么高深或者特别有用的东西。我之前写博客的目的只是因为想写,而因为想写而写,自然就会导致

中断,毕竟人是会善变的动物。

那么,我接下来要做的事就是改变。

我打算写些真正有用的文章。

下一篇进入Processing实战,目标是打造一个我们自己的Processing框架——pepper。具体情况,会在后面的教程中写出来的。

接下来如果想继续阅读api的话,请便。

006
-------------------------------------------------------------------------------------------------------------
lerpColor()
-------------------------------------------------------------------------------------------------------------

案例

stroke(255);
background(51);
color from = color(204, 102, 0);
color to = color(0, 102, 153);
color interA = lerpColor(from, to, .33);
color interB = lerpColor(from, to, .66);
fill(from);
rect(10, 20, 20, 60);
fill(interA);
rect(30, 20, 20, 60);
fill(interB);
rect(50, 20, 20, 60);
fill(to);
rect(70, 20, 20, 60);

-------------------------------------------------------------------------------------------------------------

描述

这个函数很类似lerp()函数,也是输入两个范围,一个比值,从而得到两个之间的一个值的函数。
不同的是,lerpColor()函数所计算的是颜色。具体用法与lerp()基本完全一样,不再赘述。

唯一有一点不同的是,lerpColor()函数会把越位的数值截断——也就是说比如原来是20-230,你把
比值设到了1.1那么就还会是230,就算它的1.1倍并不超过255。而在lerp()中,越界是完全允许的。
这样设置的原因是——防止出现无法表现的颜色。(当然你要是最开始设置的颜色以及超过范围
还是没治)

-------------------------------------------------------------------------------------------------------------

语法

lerpColor(c1, c2, amt)

-------------------------------------------------------------------------------------------------------------

参数

c1 int: 起始颜色值
c2 int: 重点颜色值
amt float: 0.0到1.0之间的比例

-------------------------------------------------------------------------------------------------------------

返回值

int
这里的这个int其实有很多值得说的地方——因为,processing里的color类型其实就是int!!
对,你没有看错,color就是int。肯定你会觉得很奇怪——不然估计你也没必要看我的教程.....
那么来讲讲,为什么int类型可以兼管color。

首先,int类型占4字节,与平台无关。
而color类型,其实就是4组数字,RGB三原色以及alpha透明通道。
一般使用的颜色都是0-255的范围,即需要一字节的存储大小。4组数字正好是一个int的空间。

底层的东西就不多说了——不过感觉使用int来表示颜色还真是很有java特色——C++就做不到。

-------------------------------------------------------------------------------------------------------------

相关

color()
lerp()

-------------------------------------------------------------------------------------------------------------

007
-------------------------------------------------------------------------------------------------------------
nfp()
-------------------------------------------------------------------------------------------------------------

案例

int a=200, b=-40, c=90;
String sa = nfp(a, 10);
println(sa); // Prints "+0000000200"
String sb = nfp(b, 5);
println(sb); // Prints "-00040"
String sc = nfp(c, 3);
println(sc); // Prints "+090"

float d = -200.94, e = 40.2, f = -9.012;
String sd = nfp(d, 10, 4);
println(sd); // Prints "-0000000200.9400"
String se = nfp(e, 5, 3);
println(se); // Prints "+00040.200"
String sf = nfp(f, 3, 5);
println(sf); // Prints "-009.01200"

-------------------------------------------------------------------------------------------------------------

描述

用于把数字格式化为字符串。和nf函数用法相同,但是正数前面会出现"+",负数前面出现“-”。它有两种格式,一种是

确定小数点后位数;另一种是确定整数位和小数点位。而这些值应该是正整数。

-------------------------------------------------------------------------------------------------------------

语法

nfp(num, digits)
nfp(num, left, right)

-------------------------------------------------------------------------------------------------------------

参数

num float[], int[], or int: 要被格式化的数字
digits int: 小数点后数位
left int: 小数点前数位
right int: 小数点后数位

-------------------------------------------------------------------------------------------------------------

返回值

String or String[]

-------------------------------------------------------------------------------------------------------------

相关

nf()
nfs()
nfc()
-------------------------------------------------------------------------------------------------------------

008
-------------------------------------------------------------------------------------------------------------
box()
-------------------------------------------------------------------------------------------------------------

案例

size(100, 100, P3D);
translate(58, 48, 0);
rotateY(0.5);
noFill();
box(40);

-------------

size(100, 100, P3D);
translate(58, 48, 0);
rotateY(0.5);
noFill();
box(40, 20, 50);

-------------------------------------------------------------------------------------------------------------

描述

box就是由rectangle挤压生成的一种几何体。(就是一个长方体)
如果它的每条边长度都相等的话,它就是一个正方体

-------------------------------------------------------------------------------------------------------------

语法

box(size)
box(w, h, d)

-------------------------------------------------------------------------------------------------------------

参数

size float: 每条边的长度(正方体)
w float: x轴方向长度
h float: y轴方向长度
d float: z轴方向长度

-------------------------------------------------------------------------------------------------------------

返回值

void

-------------------------------------------------------------------------------------------------------------

相关

sphere()

-------------------------------------------------------------------------------------------------------------

009
-------------------------------------------------------------------------------------------------------------
sphere()
-------------------------------------------------------------------------------------------------------------

案例

size(100,100,P3D);
noStroke();
lights();
translate(58, 48, 0);
sphere(28);

-------------------------------------------------------------------------------------------------------------

描述

sphere是一种用三角面拼接而成的空心球体

-------------------------------------------------------------------------------------------------------------

语法

sphere(r)

-------------------------------------------------------------------------------------------------------------

参数

r float: 球体半径

-------------------------------------------------------------------------------------------------------------

返回值

void

-------------------------------------------------------------------------------------------------------------

相关
sphereDetail()

-------------------------------------------------------------------------------------------------------------

010
-------------------------------------------------------------------------------------------------------------
sphereDetail()
-------------------------------------------------------------------------------------------------------------

案例

void setup() {
size(100, 100, P3D);
}

void draw() {
background(200);
stroke(255, 50);
translate(50, 50, 0);
rotateX(mouseY * 0.05);
rotateY(mouseX * 0.05);
fill(mouseX * 2, 0, 160);
sphereDetail(mouseX / 4);
sphere(40);
}

-------------------------------------------------------------------------------------------------------------

描述

通过控制构成球体网格的顶点的数量来控制球体的精细程度。默认的精度是30。
精度为30的情况下,每360度对应着30块三角面,也就是360/30等于12度,
看起来还是比较平滑的。如果你想每一帧都渲染很多的球体的话,
最好适当减少一下分形的精度。

只有调用sphereDetail()并赋予一个新的精度时才会真正改变设置,因此不要每个
球体都调用一次——除非你想让他们的精度不同——让小的物体、离镜头远的精度更低,
这样可以提高效率。

如果想要把水平方向和垂直方向上的精度分别改变的话,请调用两个参数的版本

-------------------------------------------------------------------------------------------------------------

语法

sphereDetail(res)
sphereDetail(ures, vres)

-------------------------------------------------------------------------------------------------------------

参数

res int: 分形精度()最小是3
ures int: 水平方向分形精度
vres int: 垂直方向分形精度

-------------------------------------------------------------------------------------------------------------

返回值

void

-------------------------------------------------------------------------------------------------------------

相关
sphere()

-------------------------------------------------------------------------------------------------------------

时间: 2024-08-05 11:15:12

日更第13期-2015-4-9-processing教程-API篇-第二讲-lerpColor()、nfp()、的相关文章

日更第11期-2015-3-27-processing教程-API篇-第一讲-map(),Table,loadTable(),norm(),lerp()

hI!!今天上线发现我多了一个粉丝!!哇,好高兴! 不过我昨天食言了,没有继续日更......希望不会掉粉..... 不过那是有原因的,我昨天一直在找数据,终于今天给整理好了,我打算这个周末整一整.然后就可以出真正厉害的教程啦!! 我先说一下我接下来会出的教程,然后说说今天发的这个到底是什么. 接下来: 1,美国失业数据可视化 2,地图数据可视化案例教学(案例来自processing教学书visualizing data) 3,中国高考分地域分析 4,API教程 然后说说今天这是干啥. 简单来说

日更第2期-2015-1-15-openFrameworks系列第一讲-手把手制作openFrameworks上的第一个程序!

恩,今天和朋友打球来着,于是今天的案例程序就做一个球吧!O(∩_∩)O哈哈~ 首先,没有看过上一篇教程的同学,还有还没有下载好VS和OpenFrameworks的同学,都去下一下. 传送地址:http://www.cnblogs.com/linongbo/p/4227552.html 那么,开始今天的日更啦! Hello OpenFrameworks! VS的安装部分我就不说了,不过我个人建议——默认是安装在C盘的,不过你要是手动改到别的盘上的话,C盘上 依然会有6G左右的内容.......Σ(

日更第4期-2015-1-19-openFrameworks系列第三讲-面向对象的小球们

昨天的教程里,实在有太多想讲的东西了,所以反而什么都没有讲.一个很大的原因就是——我妄想让所有 水平的读者都能读懂.这其实是绝对不可能的.因为,每个人知识面不同,已经掌握的技能也不同,那么所 适应的学习轨迹其实也该不同. 以我个人来说,我其实是一个谨慎型的人,在学习的过程中一般不会冒进,这意味着我的基础知识会更加 扎实,但是进步的速度就会偏慢.我在这里写博客,其实就是一种学习方式,但无疑,这种学习方式其实很 效率低下(而且还没有人看).可是,对于我就是一个很好的补充......感觉有点跑题了,其

日更第6期-2015-1-29-如何科学地使用因特网-第一讲-总之先爬墙

哟哟,我又来日更了啊!O(∩_∩)O哈哈~不过,其实是隔了两天,不过比起上次,是要好了不少. 先说个好消息吧!我1月31日就要放假啦,然后就可以回家啦. 然后,回家之后,我就要正式的日更啦!现在为止我可是一直在隐藏实力哦.我要从几天一更进化为一天几更. 先试试一夜七次...... 恩,说点正经的:我接下来会更新些什么内容. 第一部分,OpenFrameworks的使用,即OpenFrameworks系列教程,里面包括example的解释,tutorial的 翻译,api的详解以及最新例子的展示.

日更第3期-2015-1-18-openFrameworks系列第二讲-规范学习函数式编程!

昨天周六,我休息了一次.今天感觉心情还不错,就干脆多更一点.恩,同学们,注意啦,今天的课程可是不仅长, 还非常的不轻松哦!我们主要要讲一下C++中继承于C的函数式编程,还有判断这种特殊结构:除此之外, OpenFrameworks的一些基础函数.概念,我也会悉数讲解. 总之,做好觉悟再上吧! 有问题可以发到我的邮箱:[email protected] 于是,开始今天的课程! C++中的函数式编程 于是,先把我下面的这些代码敲到你的编辑器里吧. 1 //ofApp.cpp 2 3 #include

【算法?日更?第八期】区间动态规划:1572:括号配对题解

废话不多说,直接上题: 题目测评链接:戳这里 其实什么GBE都没用,小编最开始看了半天不懂,看了看别人的博客才知道这段话没什么用处.其实就是给一段字符串,判断是否括号是配对的. 这道题一看就会想到区间动态规划(不会戳这里临时补一补),最开始先老老实实地写了一遍区间动态规划,后来觉得用栈也可以,于是写了一遍,代码如下: 1 #include<iostream> 2 #include<cstring> 3 #include<stack> 4 using namespace

【算法?日更?第十七期】信息奥赛一本通1598:【 例 2】最大连续和题解

废话不多说,直接上题: 1598:[ 例 2]最大连续和 时间限制: 1000 ms         内存限制: 524288 KB提交数: 303     通过数: 91 [题目描述] 给你一个长度为 n 的整数序列 {A1,A2,?,An},要求从中找出一段连续的长度不超过 m 的子序列,使得这个序列的和最大. [输入] 第一行为两个整数 n,m: 第二行为 n 个用空格分开的整数序列,每个数的绝对值都小于 1000. [输出] 仅一个整数,表示连续长度不超过 m 的最大子序列和. [输入样

开发者最佳实践日·第 13 期-实践微服务架构

随着Docker及以移动化浪潮的冲击,系统的架构与设计成为系统构建中重要环节,微服务架构这一全新的企业架构模式也越来越受到关注,使用容器技术实施微服务架构转变,如何更好的利用计算资源,以及更方便的维护越来越复杂的应用程序,微服务作为一种更灵活.可靠.开放的架构的应用实践也越来越多. 微服务架构如何让应用程序的代码库更加敏捷?如何快速迭代和扩充一个代码库并大幅提升开发者生产效率?微服务架构可以让开发团队在研发过程中更加的敏捷和灵活.想要知道更多关于微服务架构的知识,这一场沙龙你不可错过. 开发者最

《高性能JavaScript》学习笔记(2)——日更中

我说日更就日更,接着....今天从缓冲布局信息开始啦! -------------------2016-7-22 21:09:12--------------------------- 14.减少对布局信息的查询次数,查询时将他赋值给局部变量参与计算. 例子,在元素网右下方不断平移时,在timeout中可以写: 1 var current = myElement.offsetLeft; 2 current++; 3 myElement.style.left = current + 'px'; 4