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

Map*_*boy 1 opengl geometry glsl

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

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

我正在使用

acos(dot(vector1, vector2));
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*las 9

矢量点积将计算两个矢量之间的角度的余弦,两个矢量的长度进行缩放.如果您想获得角度,则必须在执行点积之前对两个向量进行标准化.


Pet*_* O. 5

单独的点积会给你一些关于两个向量之间角度的非常粗略的信息,即使它们不是单位向量:

  • 如果点积为 0,则向量相隔 90 度(正交或垂直)。
  • 如果点积小于 0,则向量相隔 90 度以上。
  • 如果点积大于 0,则向量相距小于 90 度。