给定两个向量 a、b 之间的夹角为 45 度,此着色器代码 return 是什么?

What does this shader code return for two vectors a, b, given an angle of 45 degrees between them?

返回的值是什么:

dot(normalize(a), normalize(b))

设向量a和b的夹角为45°

一般来说,2个向量的乘积等于2个向量夹角的余弦乘以大小(长度) 的两个向量。

dot( A, B ) == | A | * | B | * cos( angle_A_B ) 

因此,2 个单位向量的 乘积等于 2 个向量之间夹角的 余弦 ,因为单位向量的长度为 1.

uA = normalize( A )
uB = normalize( B )
cos( angle_A_B ) == dot( uA, uB )


这意味着,如果矢量 ab 之间的角度为 45 度,则:

dot(normalize(a), normalize(b))  =  cos(45°)  =  1 / sqrt(2)

注意,边长为1的正方形的对角线长度为sqrt(2)。如果对角线的长度是1,那么一侧的长度是1 / sqrt(2)