在GLSL中计算两个向量之间的角度

9
我是一名GLSL工程师,需要快速高效地计算两个二维向量之间的夹角。给定两个vec2向量,例如(30,20)和(50,50),我需要计算它们之间的夹角。目前我正在使用:
acos(dot(vector1, vector2));

尽管如此,这似乎并没有正确地给出我的角度。我是做错了什么,还是这个函数是正确的?
2个回答

21

向量的点积将计算两个向量之间的余弦值,乘以两个向量的长度。如果您只想获得角度,则必须在执行点积之前对两个向量进行归一化。


8

仅凭点积,即使它们不是单位向量,也能提供有关两个向量夹角的一些粗略信息:

  • 如果点积为0,则这两个向量相互垂直或正交,夹角为90度。
  • 如果点积小于0,则这两个向量相互夹角大于90度。
  • 如果点积大于0,则这两个向量相互夹角小于90度。

非常有帮助! - z0rberg's

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接