zoukankan      html  css  js  c++  java
  • 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;
        }

      

  • 相关阅读:
    C++构造与析构 yongmou
    坏习惯 yongmou
    Python 字符串方法
    python 列表推导式轻量级循环
    python 循环遍历字典元素
    python 短路逻辑和条件表达式
    python 迭代器
    一些关于面向对象设计的思考
    python map内建函数
    Python 列表
  • 原文地址:https://www.cnblogs.com/sy-liu/p/14547659.html
Copyright © 2011-2022 走看看