t
c d
就是两次线性插值,先在x方向插出t上下方的_t1、_t2,然后再用它们插出t来
float test(float x,float y)
{
float _t1,_t2,t
_t1 = a+(b-a)*(x-ax)/(bx-ax)
_t2 = c+(d-c)*(x-cx)/(dx-cx)
t = _t1 +(_t2-_t1)*(y - ay)
return t
}
#include <stdio.h>double Lerp(double x0,double y0,double x1,double y1,double x)
{
double dy = y1 - y0
if(dy == 0){
printf("除0错误!\n")
return 0
}
return x * (x1 - x0) / dy
}
int main()
{
double x0,x1,y1,y0,x,y
printf("Inptu x0 y0 x1 y1 x:")
scanf("%lf %lf %lf %lf %lf",&x0,&y0,&x1,&y1,&x)
y = Lerp(x0,y0,x1,y1,x)
printf("y = %lf\n",y)
return 0
}
要查表,我手边没有表,而且已经学过很多年了,只随便说个数字,举例说明:先假定r=4%,查表计算出数值=900再假定r=5%,查表计算出数值=1100
然后计算(1100-900)/(5%-4%)=(1000-900)/(r-4%)
200(r-4%)=1
r=4.5%
如果你第一次选取是数值是3%,计算出数值=800,第二次选取4%,计算=900,都低于1000,那么就要继续试5%,6%……直到计算结果一个小于1000,另一个大于1000,而且与1000越接近,差值法计算出r越准确,如果选项一个1%,一个20%,查表后得出数值,确实也能计算,但不会很准