5.Vector3向量模长和单位向量

5.3D数学-Vector3向量-向量模长和单位向量


5.1 知识点

主要学习内容

向量基础


Unity中的向量

  • 三维向量 - Vector3
    • Vector3有两种几何意义
      • 位置:Vector3代表一个点
        • 示例:print(this.transform.position); 代表对象当前位置
      • 方向:Vector3代表一个方向
        • 示例:print(this.transform.forward); 代表对象向前的单位向量
        • 示例:print(this.transform.up); 代表对象向上的单位向量
    • Vector2和Vector3基本同理
      • 示例:Vector3 v = new Vector3(1, 2, 3);
      • 示例:Vector2 v2 = new Vector2(1, 2);

两点决定一向量

Unity中的两点决定一向量

  • Vector3变量A和B此时的几何意义是两个点
    • 示例:
      Vector3 A = new Vector3(1, 2, 3);
      Vector3 B = new Vector3(5, 1, 5);
      
  • 用终点减去起点求向量
    • Vector3变量AB和BA此时的几何意义是两个向量
    • 示例:
      Vector3 AB = B - A;
      Vector3 BA = A - B;
      

零向量和负向量

Unity中的零向量和负向量

  • 零向量
    • 示例:print(Vector3.zero);
  • 原向量
    • 示例:print(Vector3.forward);
  • 负向量
    • 示例:print(-Vector3.forward);

向量的模长

Unity中的向量的模长

magnitude变量 获取向量模长

  • 返回该向量的长度。(只读)
  • Vector3中提供了获取向量模长的成员属性
  • 示例:
    print(AB.magnitude); // AB向量的模长
    Vector3 C = new Vector3(5, 6, 7);
    print(C.magnitude); // 从原点O出发终点为C的向量OC的模长
    // Distance方法 是通过点的距离获取的长度
    // 返回 a 与 b 之间的距离。
    print(Vector3.Distance(A, B)); // 数值上等于AB.magnitude
    

单位向量

Unity中的单位向量

normalized变量 获取该向量方向的单位向量 返回同方向长度为1的向量

  • 返回 magnitude 为 1 时的该向量。(只读)
  • Vector3中提供了获取单位向量的成员属性
  • 示例:
    print(AB.normalized);
    print(AB / AB.magnitude); // 数值上等于AB.normalized
    

总结

  • Vector3这边变量 可以表示一个点 也可以表示一个向量 具体表示什么 是根据我们的具体需求和逻辑决定
  • 如何在Unity里面得到向量 终点减起点 就可以得到向量 点C也可以代表向量 代表的就是 OC向量 O是坐标系原点
  • 得到了向量 就可以利用 Vector3中提供的 成员属性 得到模长和单位向量
  • 模长相当于可以得到 两点之间的距离 单位向量 主要是用来进行移动计算的 它不会影响我们想要的移动效果

5.2 知识点代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson05_3D数学_Vector3向量_向量模长和单位向量 : MonoBehaviour
{    
    void Start()
    {
        #region 知识点一 Unity中的向量

        //三维向量 - Vector3
        //Vector3有两种几何意义

        //位置 —— Vector3代表一个点
        print(this.transform.position);//代表对象当前位置

        //方向 —— Vector3代表一个方向
        print(this.transform.forward);//代表对象向前的单位向量
        print(this.transform.up);//代表对象向上的单位向量

        //Vector2和Vector3基本同理
        Vector3 v = new Vector3(1, 2, 3);
        Vector2 v2 = new Vector2(1, 2);

        #endregion

        #region 知识点二 Unity中的两点决定一向量

        //Vector3变量A和B此时的几何意义是两个点
        Vector3 A = new Vector3(1, 2, 3);
        Vector3 B = new Vector3(5, 1, 5);

        //用终点减去起点求向量
        //Vector3变量AB和BA此时的几何意义是两个向量
        Vector3 AB = B - A;
        Vector3 BA = A - B;
        //以后想知道两个位置的方向 可以用两个对象的position相减

        #endregion

        #region 知识点三 Unity中的零向量和负向量

        //零向量
        print(Vector3.zero);
        //原向量
        print(Vector3.forward);
        //负向量
        print(-Vector3.forward);

        #endregion

        #region 知识点四 Unity中的向量的模长

        //magnitude变量 获取向量模长
        //返回该向量的长度。(只读)
        //Vector3中提供了获取向量模长的成员属性
        print(AB.magnitude);//AB向量的模长
        Vector3 C = new Vector3(5, 6, 7);
        print(C.magnitude);//从原点O出发终点为C的向量OC的模长
        //Distance方法 是通过点的距离获取的长度
        //返回 a 与 b 之间的距离。
        print(Vector3.Distance(A, B));//数值上等于AB.magnitude

        #endregion

        #region 知识点五 Unity中的单位向量

        //normalized变量 获取该向量方向的单位向量 就是返回一个同方向长度为1的向量
        //返回 magnitude 为 1 时的该向量。(只读)
        //Vector3中提供了获取单位向量的成员属性
        print(AB.normalized);
        print(AB / AB.magnitude);//数值上等于AB.normalized

        #endregion
    }

    //总结
    //1.Vector3这边变量 可以表示一个点 也可以表示一个向量 具体表示什么 是根据我们的具体需求和逻辑决定
    //2.如何在Unity里面得到向量 终点减起点 就可以得到向量  点C也可以代表向量 代表的就是 OC向量 O是坐标系原点
    //3.得到了向量 就可以利用 Vector3中提供的 成员属性 得到模长和单位向量
    //4.模长相当于可以得到 两点之间的距离  单位向量 主要是用来进行移动计算的 它不会影响我们想要的移动效果
}

5.3 练习题

Unity中判断两点之间距离有几种方式?

  • Distance方法传入AB两个对象的坐标
print(Vector3.Distance(A.position, B.position));
  • 终点减起点算出BA向量求模长
print((A.position - B.position).magnitude);
  • 终点减起点算出AB向量求模长
print((B.position - A.position).magnitude);

计算向量(3,4,5)的模长(手写)

模长计算公式为:

模长 = √(x^2 + y^2 + z^2)

对于向量 (3, 4, 5):

模长 = √(3^2 + 4^2 + 5^2)
    = √(9 + 16 + 25)
    = √(50)
    ≈ 7.07

计算向量 (3, 4) 的单位向量(手写)

单位向量是指模长为1的向量,计算步骤如下:

  1. 计算向量的模长:
模长 = √(x^2 + y^2)
    = √(3^2 + (-4)^2)
    = √(9 + 16)
    = √25
    = 5
  1. 计算单位向量:
单位向量 = (3/5, -4/5)

5.4 练习题代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson05_练习题 : MonoBehaviour
{
    public Transform A;
    public Transform B;
    
    void Start()
    {
        #region 练习题一
        //Unity中判断两点之间距离有几种方式?

        //有三种方式
        //Distance方法传入AB两个对象的坐标
        print(Vector3.Distance(A.position, B.position));
        //终点减起点算出BA向量求模长
        print((A.position - B.position).magnitude);
        //终点减起点算出AB向量求模长
        print((B.position - A.position).magnitude);

        #endregion


        #region 练习题二

        //计算向量(3,4,5)的模长(手写)

        //根号50

        #endregion

        #region 练习题三

        //计算向量(3, -4) 的单位向量(手写)

        //5

        #endregion
    }


}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏