improved "ray_intersection_angle" functions.

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 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