Vec2::angle的返回值为[0,180]
Vec2::angle(Vec2(1,0), Vec2(1,1)); // 45° Vec2::angle(Vec2(1,0), Vec2(1,-1)); // 45°
getAngle的返回值为[-90,90]
Vec2(1,0).getAngle(Vec2(1,1)); // 45 Vec2(1,0).getAngle(Vec2(1, -1));// -45
点乘判断前后
点乘,也称为内积、数量积或标量积,是向量运算中的一种基本操作。它通常用来计算两个向量之间的相似度或角度。
几何定义: a·b=|a|*|b|*cos<a,b>
2个向量的夹角范围[0,360]
cos(-90°)~cos(90°) = [1,0]
>0表示在前边cos(90°)~cos(270°) = [0,-1]
<0表示在后边
叉乘判断左右
叉乘,也称为向量积、矢量积或外积,是向量运算中的一种操作。
在计算机图形学中,叉乘可以用于计算表面法向量、生成旋转轴以及进行投影变换等操作。
几何定义:|c|=|a||b|sin<a,b>
sin(0°)~sin(180°) = [1,0]
sin(180°)~sin(360°) = [0,-1]
Vec2 vec = Vec2(0, 1)-Vec2::ZERO; float ret = 0; // 注意,必须是相同的起点,这个非常重要 ret = vec.cross(Vec2(0, 1)-Vec2::ZERO); // 0 ret = vec.cross(Vec2(0, -1)-Vec2::ZERO);// -0 ret = vec.cross(Vec2(1, 0)-Vec2::ZERO); // -1 ret = vec.cross(Vec2(-1, 0)-Vec2::ZERO);// 1 ret = vec.cross(Vec2(1, 1)-Vec2::ZERO);// -1 ret = vec.cross(Vec2(1, -1)-Vec2::ZERO);// -1 ret = vec.cross(Vec2(-1, 1)-Vec2::ZERO);// 1 ret = vec.cross(Vec2(-1, -1)-Vec2::ZERO);// 1
>0 左边
<0 右边