• Unity一个点绕另一个点旋转


    参数:Vector3 point 要旋转的点

       Vector3 pivot 中心点

       Vector3 euler 旋转的角度

    函数:Quaternion.Euler(float x, float y, float z) 返回一个绕Z轴旋转z度、围绕X轴旋转x度、围绕Y轴旋转y度的旋转。另一个重载函数Quaternion.Euler(Vector3 euler)

    步骤:

    1、计算方向向量

      Vector3 direction  = point - pivot

    2、计算方向向量旋转后的向量

      Vector3 rotatedDirection =Quaternion.Euler(euler) * direction // 这句代码实现了旋转向量的功能

    3、计算旋转后的点

      Vector3 rotatedPoint = rotatedDirection + pivot

     完整代码:

        /// <summary>
        /// 一个点绕另一个点旋转
        /// </summary>
        /// <param name="point">要旋转的点</param>
        /// <param name="pivot">中心点</param>
        /// <param name="euler">旋转的角度</param>
        /// <returns></returns>
        public Vector3 RotatePointAroundPivot(Vector3 point, Vector3 pivot, Vector3 euler)
        {
            Vector3 direction = point - pivot;
            Vector3 rotatedDirection = Quaternion.Euler(euler) * direction;
            Vector3 rotatedPoint = rotatedDirection + pivot;
            return rotatedPoint;
        }

      

  • 相关阅读:
    伪多项式时间 Pseudo-polynomial time
    Aho-Corasick算法
    写给十八岁以下的你
    网络流算法
    Java static关键字
    带有负权边的最短路径问题
    Miller_Rabin(米勒拉宾)素数测试
    关于同余与模运算的总结
    UVa1585
    UVa修改版02
  • 原文地址:https://www.cnblogs.com/sy-liu/p/14547659.html
Copyright © 2020-2023  润新知