对于两个向量 a、b,假设它们之间的角度为 45 度,该着色器代码会返回什么?

Ash*_*eri 0 shader glsl webgl

返回的值是多少:

\n\n
dot(normalize(a), normalize(b))\n
Run Code Online (Sandbox Code Playgroud)\n\n

假设向量 a 和 b 之间的角度为 45\xc2\xb0。

\n\n
    \n
  • 0
  • \n
  • 1
  • \n
  • 开方(2)
  • \n
  • 1 / 开方(2)
  • \n
\n

Rab*_*d76 5

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

\n\n
dot( A, B ) == | A | * | B | * cos( angle_A_B ) \n
Run Code Online (Sandbox Code Playgroud)\n\n

由此可见, 2 个单位向量的积等于2 个向量之间角度的余弦,因为单位向量的长度为 1。

\n\n
uA = normalize( A )\nuB = normalize( B )\ncos( angle_A_B ) == dot( uA, uB )\n
Run Code Online (Sandbox Code Playgroud)\n\n

A点B

\n\n
\n\n

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

\n\n
dot(normalize(a), normalize(b))  =  cos(45\xc2\xb0)  =  1 / sqrt(2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n