Processing 线性插值和映射函数:interpolate() 和 map()
在 Processing 中,你可以使用函数来实现数值的线性插值和映射。下面是两个示例函数:
- 线性插值函数 'interpolate()':
float interpolate(float value, float startRange, float endRange, float startValue, float endValue) {
float t = (value - startRange) / (endRange - startRange);
return startValue + t * (endValue - startValue);
}
这个函数接受 5 个参数:value(要进行插值的值),startRange(起始范围),endRange(结束范围),startValue(起始值),endValue(结束值)。函数会根据起始范围和结束范围的比例,计算 value 在起始值和结束值之间的线性插值结果,并返回。
使用这个函数来对 20 在 10-100 之间进行线性插值的示例代码如下:
void setup() {
float result = interpolate(20, 10, 100, 0, 1);
println('线性插值结果:' + result);
}
运行这段代码,你将得到 20 在 10-100 之间进行线性插值的结果。
- 映射函数 'map()':
float map(float value, float start1, float end1, float start2, float end2) {
float t = (value - start1) / (end1 - start1);
return start2 + t * (end2 - start2);
}
这个函数接受 5 个参数:value(要进行映射的值),start1(原始范围的起始值),end1(原始范围的结束值),start2(目标范围的起始值),end2(目标范围的结束值)。函数会根据原始范围和目标范围的比例,计算 value 在目标范围中的映射结果,并返回。
使用这个函数来将 30 在 0-100 之间映射到 100-200 之间的示例代码如下:
void setup() {
float result = map(30, 0, 100, 100, 200);
println('映射结果:' + result);
}
运行这段代码,你将得到 30 在 0-100 之间映射到 100-200 之间的结果。
这两个函数可以很方便地实现数值的线性插值和映射,在处理数值范围的转换和变换时非常有用。
原文地址: https://www.cveoy.top/t/topic/riq 著作权归作者所有。请勿转载和采集!