Processing 中的线性插值和映射函数:实例详解
在 Processing 中,你可以使用以下代码定义两个函数,分别实现对 20 的线性插值和将 30 从 0-100 映射到 100-200 的范围:
- 线性插值函数:
float linearInterpolation(float value, float min, float max, float newMin, float newMax) {
float t = (value - min) / (max - min);
float newValue = newMin + t * (newMax - newMin);
return newValue;
}
// 示例用法
float interpolatedValue = linearInterpolation(20, 10, 100, 100, 200);
println('20 的线性插值结果:' + interpolatedValue);
在上述代码中,我们定义了一个名为 linearInterpolation 的函数,它接受五个参数:要插值的值,原始范围的最小值和最大值,目标范围的最小值和最大值。在函数内部,我们首先计算插值所在的比例(t),然后将比例应用于目标范围,得到插值结果(newValue),最后将结果返回。
在示例用法中,我们调用 linearInterpolation 函数来对 20 进行线性插值。将结果输出到控制台上。
- 映射函数:
float mapValue(float value, float oldMin, float oldMax, float newMin, float newMax) {
float mappedValue = newMin + (value - oldMin) * (newMax - newMin) / (oldMax - oldMin);
return mappedValue;
}
// 示例用法
float mappedValue = mapValue(30, 0, 100, 100, 200);
println('30 的映射结果:' + mappedValue);
在上述代码中,我们定义了一个名为 mapValue 的函数,它接受五个参数:要映射的值,原始范围的最小值和最大值,目标范围的最小值和最大值。在函数内部,我们首先计算映射值相对于原始范围的比例,然后将比例应用于目标范围,得到映射结果(mappedValue),最后将结果返回。
在示例用法中,我们调用 mapValue 函数来将 30 从 0-100 映射到 100-200 的范围。将结果输出到控制台上。
原文地址: http://www.cveoy.top/t/topic/ug8 著作权归作者所有。请勿转载和采集!