zoukankan      html  css  js  c++  java
  • 日更第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()

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

  • 相关阅读:
    第3次实践作业
    第2次实践作业
    第1次实践作业
    2019 SDN大作业
    第05组 Beta版本演示
    个人作业——软件工程实践总结&个人技术博客
    个人作业——软件评测
    Springboot项目部署到云服务器(Ubuntu 18.04)
    结对第二次作业——某次疫情统计可视化的实现
    结对第一次—疫情统计可视化(原型设计)
  • 原文地址:https://www.cnblogs.com/linongbo/p/4411615.html
Copyright © 2011-2022 走看看