Opengl 绞尽脑汁试图理解线性插值公式的关系

Opengl 绞尽脑汁试图理解线性插值公式的关系,opengl,Opengl,在纯数学中,使用Wikipedia作为源,它描述了线性插值公式的推导过程,我理解了这个方程 y = y0 + (x-x0)*(y1-y0)/(x1-x0) 没有问题 但是,在OpenGL和一般图像处理中,当处理线性插值时,给出了相同的公式 (a,b) interpolated a * (1-t) + bt where 0<=t<=1 (a,b)插值a*(1-t)+bt,其中0等式相同,变量名称不同,其中一些变量具有固定值 从维基百科的定义开始: y=y0+(x-x0)*(y1-

在纯数学中,使用Wikipedia作为源,它描述了线性插值公式的推导过程,我理解了这个方程

y = y0 + (x-x0)*(y1-y0)/(x1-x0)
没有问题

但是,在OpenGL和一般图像处理中,当处理线性插值时,给出了相同的公式

(a,b) interpolated a * (1-t) + bt where 0<=t<=1 

(a,b)插值a*(1-t)+bt,其中0等式相同,变量名称不同,其中一些变量具有固定值

从维基百科的定义开始:

y=y0+(x-x0)*(y1-y0)/(x1-x0)

现在,替换为:

y0=a

y1=b

x0=0

x1=1

x=t

我们从中得出以下公式:

y=a+(t-0)*(b-a)/(1-0)

我们可以简化和重新安排:

y=a+t*(b-a)

y=a+tb-ta

y=a(1-t)+bt


得出的公式是相同的。

等式是相同的,变量只是名称不同,有些变量有固定值

从维基百科的定义开始:

y=y0+(x-x0)*(y1-y0)/(x1-x0)

现在,替换为:

y0=a

y1=b

x0=0

x1=1

x=t

我们从中得出以下公式:

y=a+(t-0)*(b-a)/(1-0)

我们可以简化和重新安排:

y=a+t*(b-a)

y=a+tb-ta

y=a(1-t)+bt


得到的公式是相同的。

假设您需要[a,b]范围内的值
x

你可以说,
x
是两个极端的组合。如果使用100%的“a”,则使用0%的“b”。如果60%的“a”,那么40%的“b”。

通常,如果您使用'b'的
t
,则您使用'a'的
1-t
。条件
0假设您需要[a,b]范围内的值
x

你可以说,
x
是两个极端的组合。如果使用100%的“a”,则使用0%的“b”。如果60%的“a”,那么40%的“b”。

通常,如果您使用'b'的
t
,则您使用'a'的
1-t
。条件
0您的问题已经有了很好的答案,这只是为了给第二个等式添加一点推理

第二个例子是
重心插值的开始,它在2D意义上并不完全是完整的


但它确实允许插值方程进入N维。例如,
重心插值
是如何计算从顶点着色器到碎片着色器的三角形上的值。

对于您的问题已经有了很好的答案,这只是为第二个方程添加了一点推理

第二个例子是
重心插值的开始,它在2D意义上并不完全是完整的


但它确实允许插值方程进入N维。例如,
重心插值
是如何计算从顶点着色器到碎片着色器的三角形上的值。

在文章末尾(
lerp
v0+t*(v1-v0)
(1-t)*v0+t*v1
是第一个函数的特例,那么
x
的间隔是
0
1
@rabbi76是线性外推的间隔吗?在这张几何可视化的图片中,不应该是你提到的那些长度的乘积的总和,而不是图片中所示的y*(x1-x0)?这就是我现在困惑的地方那绿色的水平箭头是干什么的?为什么它要乘以y(如原始方程式所示)?当方程只显示y=…@rabbi76时,这个类比很好,谢谢你,但在那张图中,它与解释不符,因为它说y*(x1-x0)=其他有意义的事物的总和,当方程y=其他事物的总和时,似乎有矛盾,我认为这是一个错误,在文章末尾描述了它(
lerp
v0+t*(v1-v0)
(1-t)*v0+t*v1
是第一个函数的特例,那么
x
的间隔是
0
1
@rabbi76是线性外推的间隔吗?在这张几何可视化的图片中,不应该是你提到的那些长度的乘积的总和,而不是图片中所示的y*(x1-x0)?这就是我现在困惑的地方那绿色的水平箭头是干什么的?为什么它要乘以y(如原始方程式所示)?当方程只显示y=…@rabbi76时,这个类比很好,谢谢你,但在那张图中,它与解释不符,因为它说y*(x1-x0)=其他有意义的事物的总和,当方程y=其他事物的总和时,似乎有矛盾,我认为这是个错误
x= x0 + k(x1-x0)
y= y0 + k(y1-y0)
y= y0 + (y1-y0)/(x1-x0) * x
res.x = a.x * (1-t) + b.x * t
res.y = a.y * (1-t) + b.y * t
x= x0 * (1-t) + x1 * t  =  x0 - x0 * t + x1 * t  =  x0 + (x1-x0) * t
y= y0 * (1-t) + y1 * t  =  y0 - y0 * t + y1 * t  =  y0 + (y1-y0) * t