当前位置:   article > 正文

用C#编程,求两个三维向量之间的夹角_c# 向量夹角

c# 向量夹角

我们在平时工作中,经常会需要求两个向量直接的夹角,为了避免后续遗忘,特在此做一个记录

二维向量
 

  1. double getDegAngle2d( const  vector2 v1, const vector2 v2)
  2. {
  3.     double theta = atan2(v2.y, v2.x) - atan2(v1.y, v1.x); //弧度
  4.     if (theta > M_PI)
  5.     {
  6.         theta -= 2*M_PI;
  7.     }
  8.     if (theta < -M_PI)
  9.     {
  10.         theta += 2*M_PI;
  11.     }
  12.     return theta * 180/M_PI; //角度
  13. }

三维向量

  1. /// <summary>
  2. /// 求两个向量绕轴axis 的角度
  3. /// </summary>
  4. /// <param name="dirA"></param>
  5. /// <param name="dirB"></param>
  6. /// <param name="axis"></param>
  7. private float AngleAroundAxis(Vector3 dirA, Vector3 dirB, Vector3 axis)
  8. {
  9. dirA = dirA - Vector3.Project(dirA, axis);
  10. dirB = dirB - Vector3.Project(dirB, axis);
  11. float angle = Vector3.Angle(dirA, dirB);
  12. return angle * (Vector3.Dot(axis, Vector3.Cross(dirA, dirB)) < 0 ? -1 : 1);
  13. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/756490
推荐阅读
相关标签
  

闽ICP备14008679号