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

时间:2017-02-01 16:26:03

标签: opengl geometry glsl

我在GLSL工作,需要快速有效地计算两个2D矢量之间的角度。

给定两个vec2向量,例如(30,20)和(50,50),我需要计算它们之间的角度。

我正在使用

acos(dot(vector1, vector2));

虽然这似乎没有正确地给我这个角度。我做错了什么,或者这是正确使用的功能?

2 个答案:

答案 0 :(得分:9)

矢量点积将计算两个矢量scaled by the length of both vectors之间角度的余弦值。如果您想获得角度,则必须在执行点积之前对两个向量进行标准化。

答案 1 :(得分:4)

单独的点积将为您提供关于两个向量之间角度的非常粗略的信息,即使它们不是单位向量:

  • 如果点积为0,则矢量相隔90度(正交或垂直)。
  • 如果点积小于0,则矢量相差超过90度。
  • 如果点积大于0,则矢量小于90度。