Vector3.Dot 方位判断

Dot函数经常被用在方位判断,放上代码和结果。

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

//UTF8 说明
public class dottest : MonoBehaviour
{
    [SerializeField] Text txtShow;
    [SerializeField] Transform me;  //胶囊
    [SerializeField] Transform point; //目标点
    

    // Update is called once per frame
    void Update()
    {
        Vector3 target_dir = (point.position - me.position).normalized;
        //Debug.DrawLine(me.position, target_dir * 10f, Color.blue,0.1f);
        float dot = Vector3.Dot(me.forward, target_dir);
        float dot2 = Vector3.Dot(point.right, target_dir);
        txtShow.text = "Dot(me.forward, target_dir) = " + dot.ToString("F1")+"\n"+
            "Dot(me.right, target_dir) = " + dot2.ToString("F1")
            ;
    }
}

如图:我们看蓝色的第一行输出:Dot参数1是胶囊的forward,参数2是红色球的方向。
当目标在胶囊正前方,Dot得到正数(0~1),正对着球时候最大为1。反之就是负数。

//当目标在胶囊正前方,Dot得到1。
在这里插入图片描述

//当目标在胶囊正右方,Dot得到0。
在这里插入图片描述
//当目标在胶囊正后方,Dot得到-1。
在这里插入图片描述

//当目标在胶囊正左方,Dot得到0。
在这里插入图片描述
下面是GIF图,来观测下数值变化。
请添加图片描述
我们可以看到两个向量方向相同就是1,夹角越大就越趋近-1。

这样我们就可以知道目标是在后面还是前面。
但是左边和右边如何区分呢?
这里我还做了一个right和dir的Dot的数值。就是第二行蓝色输出。
在胶囊的右侧就是正数,左侧就是负数。

参数1和参数2的向量位置可以互换,不用考虑先后问题。
这个Dot函数被应用在方位指向等。

### 回答1: Vector1.Dot(Vector2)是向量Vector1和Vector2的点积,也称为数量积或内积。点积的计算方法是将两个向量的对应分量相乘并相加得到一个标量,即: Vector1.Dot(Vector2) = Vector1.X * Vector2.X + Vector1.Y * Vector2.Y + Vector1.Z * Vector2.Z 其中,Vector1.X、Vector1.Y、Vector1.Z分别表示向量Vector1在x、y、z轴上的分量,Vector2.X、Vector2.Y、Vector2.Z同理。点积的结果可以用来计算两个向量之间的夹角、判断两个向量是否垂直或平行等。 ### 回答2: Vector1.Dot(Vector2)是指向量Vector1和Vector2的点积运算。点积也被称为向量的内积或数量积,它是两个向量之间的一种运算。 点积的计算公式为:Vector1.Dot(Vector2) = |Vector1| * |Vector2| * cosθ,其中|Vector1|和|Vector2|是向量的模(长度),θ是Vector1和Vector2之间的夹角。 点积运算的结果是一个标量(即一个实数)。它表示了Vector1和Vector2的方向相关性和大小关系。如果点积为正数,则表示Vector1和Vector2之间的夹角小于90度,也就是两向量趋于同一方向;如果点积为负数,则表示夹角大于90度,两向量趋于相反方向;如果点积为零,则表示两向量垂直。 点积在几何学和物理学中有广泛的应用,例如计算向量的投影、判断两向量是否正交、计算向量的夹角等。它还可以用于计算向量的长度和方向。 总之,Vector1.Dot(Vector2)给出了向量Vector1和Vector2之间的相关性和方向关系。通过计算点积,我们可以了解向量之间的几何性质和关系。 ### 回答3: Vector1.Dot(Vector2)表示两个向量Vector1和Vector2的点积。点积是一种向量运算,其结果是一个标量(即一个实数而不是向量)。计算过程如下: 1. 首先,检查Vector1和Vector2的维度是否相同。如果向量的维度不同,无法进行点积运算。 2. 假设Vector1的坐标为(x1, y1, z1, ...),Vector2的坐标为(x2, y2, z2, ...),则它们的点积可以表示为:Vector1.Dot(Vector2) = x1 * x2 + y1 * y2 + z1 * z2 + ... 3. 按照上述公式,将Vector1和Vector2的相应坐标乘积相加,得到点积的结果。 4. 点积的结果代表了两个向量的相似程度,如果点积为正数,则表示两个向量的方向基本一致;如果点积为负数,则表示两个向量的方向大致相反;如果点积为零,则表示两个向量垂直于彼此。 5. 注意,点积只关注向量的方向,不考虑它们的长度。因此,点积的结果并不能直接用来比较两个向量的长度大小。 总而言之,Vector1.Dot(Vector2)是计算两个向量的点积,结果是一个实数,用来衡量向量的方向相似程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值