improved "ray_intersection_angle" functions.

This commit is contained in:
2023-09-04 21:56:26 +08:00
parent bbb7daa6c2
commit a75acfabd1

View File

@@ -262,11 +262,40 @@ namespace hgl
return length_squared(v1,v2)<=(gap*gap);
}
inline float ray_angle_cos(const Vector3f &ray_dir, const Vector3f &ray_pos, const Vector3f &pos)
/**
* 计算射线与点的夹角(cos)
*/
inline float ray_intersection_angle_cos(const Vector3f &ray_dir, const Vector3f &ray_pos, const Vector3f &pos)
{
return dot(ray_dir, normalized(pos - ray_pos));
}
/**
* 计算射线与点的夹角(弧度)
*/
inline float ray_intersection_angle_radian(const Vector3f &ray_dir, const Vector3f &ray_pos, const Vector3f &pos)
{
double val=dot(ray_dir, normalized(pos - ray_pos));
if(val>1)return 0;
if(val<-1)return HGL_PI;
return acos(val);
}
/**
* 计算射线与点的夹角(角度)
*/
inline float ray_intersection_angle_degree(const Vector3f &ray_dir, const Vector3f &ray_pos, const Vector3f &pos)
{
double val=dot(ray_dir, normalized(pos - ray_pos));
if(val>1)return 0;
if(val<-1)return 180;
return rad2deg(acos(val));
}
/**
* 做一个2D旋转计算
* @param result 结果