首页 > 解决方案 > 对于两个向量 a、b,给定它们之间的 45 度角,此着色器代码返回什么?

问题描述

什么是返回值:

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

假设向量 a 和 b 之间的角度为 45°。

标签: glslshaderwebgl

解决方案


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

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 )

A 点 B


这意味着,如果向量a和之间的角度b为 45 度,则:

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

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


推荐阅读