四元数与向量

在这里插入图片描述

模长 =根号(x2+y2+z^2) 单位向量 = (x/模长,y/模长,z/模长)

		//向量 是两个点相减的出来的一个点,该点相对于原点的方向   比如向量AB = B-A ,AB 的值是一个新的坐标,他和原点的方向就是向量
        //V3 可以直接作为一个相对于原点的向量
        Vector3 V3  = new Vector3(3,4,5);

       float powValue = Mathf.Pow(3, 2) + Mathf.Pow(4, 2) + Mathf.Pow(5, 2);
       //开根号 获得模长
       float modellength_1 = Mathf.Sqrt(powValue);
       //获得单位向量  (V3_normalized_1模长为1)
       Vector3 V3_normalized_1 = new Vector3(V3.x / modellength_1, V3.y / modellength_1, V3.z / modellength_1);
       
       //直接获得模长的方法
       float modellength_2 = Vector3.Magnitude(V3);
       float modellength_3 = V3.magnitude;
       //直接获得单位向量的方法
       Vector3 V3_normalized_2 = V3.normalized;

向量加法

在这里插入图片描述

   A向量 + B向量 = C向量   规则:向量相加,首尾相连(A尾指B头)
   举例:假设A(1,0,0),B(0,1,0)
   A+B = C(1,1,0),C相对于原点的方向,如上图
   位置 + 向量 = 平移位置   规则:位置加向量等于平移位置(不分加法左右的位置)
   位置 +位置   没有几何意义

向量减法

在这里插入图片描述

   位置 -位置  得到一个新的向量
   A向量 - B向量 = C向量   规则:向量相减,头连头,尾部连尾(B头指A头)
   位置 - 向量 = 平移位置   规则:分左右,向量不可以减位置

向量乘法

   向量只能和标量(一维数)进行乘除法运算
   向量乘除一个标量 = 向量
   标量为正数,向量方向不变,放大或者缩小模长
   标量为负数,方向相反,放大或者缩小模长
   标量为0,得到零向量

向量点乘

   向量 * 向量 = 标量
   A*B =(Xa * Xb)+(Ya * Yb)+(Za * Zb)
   结果 > 0,两个向量的夹角是锐角
   结果 = 0,两个向量的夹角是直角
   结果 < 0,两个向量的夹角的钝角

在这里插入图片描述

  由上图我们可以得知 Cosβ = 直角边/单位向量B的模长
  公式是  
   Cosβ * 单位向量A的模长 * 单位向量B的模长 = 单位向量A * 单位向量B
   即
   Cosβ|A||B| = A*B   
   假设AB的模长都是1的时候(因为我们只要得到他们之间角度,我们并不需要他们的实际长度)
   所以Cosβ = 单位向量A * 单位向量B
   β = ACos(单位向量A * 单位向量B)  
   unity中所有的计算都是弧度,所以得到的β是弧度,要转成角度,还需要乘以Mathf.Rad2Deg(弧度转角度值)

向量叉乘

   向量A 叉乘 向量B = 向量C
   向量C垂直于向量A和向量B
   方向四个手指指向叉乘左边的向量A,朝向量B弯曲,此时大拇指方向为向量C的方向
   (可以通过这个判断AB向量之间的左右关系,需要定一个比较的轴,比如Y轴,则在XZ轴比较左右)

四元数

   一个四元素包含一个标量和一个3D向量
   四元数Q = [w,v] = [w,(x,y,z)],w为标量,v为3D向量
   四元数Q = [cos(β/2),sin(β/2)(x,y,z)] = [cos(β/2),sin(β/2)x,sin(β/2)y,sin(β/2)z]  固定公式
   四元数Q代表围绕着v轴旋转β度
   四元数结构体Quaternion
       float angle = 60;
       Vector3 axis = new Vector3(1, 0, 0);
       Quaternion q1 = new Quaternion(Mathf.Sin(angle/2*Mathf.Deg2Rad)*axis.x,Mathf.Sin(angle/2*Mathf.Deg2Rad)*axis.y,Mathf.Sin(angle/2*Mathf.Deg2Rad)*axis.z,Mathf.Cos(angle/2*Mathf.Deg2Rad));
       //四元数Q = Quaternion.AngleAxis(角度,轴)
       Quaternion q2 = Quaternion.AngleAxis(angle, axis);
       //四元数相乘等于旋转四元数
       Quaternion q3 = q1 * q2;//旋转了(angle + angle)度,只有(0,180)(0,-180)度
   四元数乘向量 等于旋转向量(左右位置不可变)

向量的叉乘(或外积)是一个重要的数学运算,主要用于三维空间中的向量。它的意义和用途包括:

  1. 垂直性:两个向量的叉乘结果是一个新向量,这个新向量与原来的两个向量都垂直。这在计算法向量时非常有用,比如在图形学中计算表面的法线。
  2. 面积:叉乘的模(长度)等于由这两个向量所张成的平行四边形的面积。这个特性在物理和几何中都有应用。
  3. 方向:叉乘的结果遵循右手法则,即如果你用右手的食指指向第一个向量, middle
    finger指向第二个向量,那么大拇指的方向就是叉乘结果的方向。
  4. 物理意义:在物理中,叉乘用于计算力矩、角动量等。例如,力矩可以用力向量与位置向量的叉乘来表示。

向量的点乘(或称为内积)有几个重要的几何和代数意义:

  1. 角度关系:点乘可以用于计算两个向量之间的夹角。具体来说,若有两个向量 A 和 B, 它们的点乘公式为:A⋅B=∣A∣∣B∣cos(θ)
    其中 θ 是两个向量之间的夹角。通过这个公式,我们可以判断向量的方向关系:
    如果点乘为正,说明角度小于 90 度。
    如果为零,说明角度为 90 度(即垂直)。
    如果为负,说明角度大于 90 度。
  2. 投影:点乘可以用来计算一个向量在另一个向量上的投影
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值