5.向量点乘

2024-01-03 13:01:18

点乘计算公式

点乘的几何意义

点乘的公式推导

代码相关

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

public class Lesson6 : MonoBehaviour
{
    public Transform target;
    // Start is called before the first frame update
    void Start()
    {
       
    }

    // Update is called once per frame
    void Update()
    {
        #region 调试画线
        //画线段
        //前两个参数分别是起点和终点
        //Debug.DrawLine(this.transform.position, this.transform.position + this.transform.forward, Color.red);

        //画射线
        //前两个参数分别是起点和方向
        //Debug.DrawRay(this.transform.position, this.transform.forward, Color.white);

        #endregion

        #region 通过点乘判断对象方位
        //Vector 提供了计算点乘的方法 Vector3.dot
        Debug.DrawRay(this.transform.position,this.transform.forward, Color.red);
        Debug.DrawRay(this.transform.position,target.position - transform.position , Color.red);

        float dotResult = Vector3.Dot(transform.position,target.position-transform.position);
        if(dotResult >= 0)
        {
            print("对方在我前方");
        }
        else
        {
            print("对方在我后方");
        }
        #endregion

        #region 通过点乘推导公式算出夹角
        //步骤
        //1.用单位向量计算出点乘结果
        dotResult = Vector3.Dot(this.transform.forward, (target.position - transform.position).normalized);
        //2.用反三角函数计算出角度
        print("角度是" +  Mathf.Acos(dotResult)*Mathf.Rad2Deg);

        //也可也直接用API
        print("角度2" + Vector3.Angle(this.transform.forward, target.position - this.transform.position));
        #endregion
    }
}

文章来源:https://blog.csdn.net/lqd201314/article/details/135344706
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。