如何先递增后递减
How to make an increment followed by a decrement continuously?
本文关键字:何先递 更新时间:2023-10-16
我试图获得一个从0上升到n,然后从n-1下降到0的增量,并一遍又一遍地重复这个循环。
在Processing中编写的这个例子中,我希望背景从黑色(I=0)逐渐变为白色(I=255),然后从白色逐渐变为黑色,以此类推。现在我只让它从黑色变成白色,然后突然又变成黑色。
int i = 0;
void setup(){
size(640, 360);
frameRate(60);
}
void draw(){
background(i);
i++;
if(i==256){i=0;}
}
Try-
int change = 1;
void draw(){
background(i);
i = i + change;
if(i==256){change = -1;}
if(i==0){change = 1;}
}
看待这个问题的另一种方法是:"我如何绘制三角波?"。我喜欢这种方式,因为它不需要"如果"。这样的事情就可以了。
triangleWave = maxNumber - abs(incrementedVar % (2*maxNumber) - maxNumber);
科尔,不是吗?
我有一个使用这个的旧代码,它不是画波浪,而是用它来确定尺寸和填充颜色。还有一个正弦波可供比较。看看:
float zigZag, toIncrement, speed =1, maxNumber = 255;
float sine, x = 270, speed2 = 1;
void setup() {
size(800, 400);
background(255);
}
void draw() {
background(255);
//triangle wave
toIncrement+=speed;
zigZag = maxNumber - abs(toIncrement % (2*maxNumber) - maxNumber);
fill(zigZag);
noStroke();
ellipse( 150, height/2+100, 50, 50);
strokeWeight(zigZag);
stroke(0);
line(100, height/2-100, 200, height/2-100);
text("triangle = " + int(zigZag), 100, height-30);
println("triangle wave value = " + zigZag);
//sine wave
x+=speed2;
sine = (1+sin(radians(x)))*(maxNumber/2);
fill(sine);
noStroke();
ellipse( 650, height/2+100, 50, 50);
strokeWeight(sine);
stroke(0);
line(600, height/2-100, 700, height/2-100);
fill(80);
text("sine = " + int(sine), 600, height-30);
}
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 为什么在定义函数之前先声明它
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- Python中的for循环与C++有何不同
- TSP递归解的迭代形式
- 如何在Elixir中调用递归函数并行
- 返回递归调用和仅递归调用的区别
- 数组元素打印的递归方法
- 使用递归时获取变量的奇怪值
- 如何在C++中递归地按相反顺序打印集合
- 到连接组件算法的问题(递归)
- 基例如何影响使用递归函数的哪些行