untiy3d坐标系以及向量运算

内容提要

  1. unity3d坐标系
  2. 向量运算

unity3d坐标系

*3d坐标系分为两种,分别是左手坐标系和右手坐标系。u3d使用的是左手坐标系*。
通常3d坐标系中x轴右侧代表水平正方形,y轴为垂直正方向向上,z轴分为向里和向外两种,正方向向里的是左手坐标系,向外的是右手坐标系。
左手坐标系,拇指指向x正方向,食指指向y正方向,中指指向里面为z轴正方向 	

向量运算

  1. 加法
    Vector3 a = new Vector3(0, 1, 1);
    Vector3 b = new Vector3(1, 2, 3);
    Vector3 c = a + b = (0+1,1+2,1+4)=1,3,4;
    几何意义
    untiy3d坐标系以及向量运算_第1张图片

  2. 减法
    Vector3 a = new Vector3(0, 1, 1);
    Vector3 b = new Vector3(1, 2, 3);
    Vector3 c = a + b = (0-1,1-2,14)=-1,-1,-2;
    几何意义
    untiy3d坐标系以及向量运算_第2张图片

  3. 点乘Dot
    点乘用来计算两个向量的朝向的相似度,计算点乘的向量需要单位化,得到的结果是两个向量的cos值,在-1到1之间的浮点数,-1表示朝向相反,1表示朝向相同,0表示两个向量相互垂直

    1. 表征或计算两个向量之间的夹角
    2. b向量在a向量方向上的投影积,当a是单位向量时,内积意义是投影。
    3. 当a是直线L的单位法向量时,计算b终点到L的距离
	private void Dot(Vector3 a, Vector3 b)
    {
        float c = Vector3.Dot(a.normalized, b.normalized);
        Debug.Log($"Dot={c}");
    }
  1. 叉乘Cross
	private void Cross(Vector3 a, Vector3 b)
    {
        Vector3 c = Vector3.Cross(a, b);
        Debug.Log($"Cross={c}");
    }
	叉乘的得到一个向量,这个向量垂直于向量a和向量b所组成的平面,用于计算法向量
1. 通过两个向量的外积,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系;
2. 当a是单位向量时,计算b终点到a所在直线的距离
3. 在二维空间中,aXb等于由向量a和向量b构成的平行四边形的面积
  1. Angle
    用于计算两个向量之间的夹角
	private void Angle(Vector3 a, Vector3 b)
    {
        float c = Vector3.Angle(b, a);
        Debug.Log($"Angle={c}");
    }

你可能感兴趣的:(unity3d)