点乘:

点乘, 即|a|·|b|·cosθ, (结果是一个数字)
即: a的长度 * b的长度 * ab的夹角

夹角<90°, 则cosθ>0, 则结果>0
夹角>90°, 则cosθ<0, 则结果<0

那有什么用呢?

答: 判断敌人在我前面还是后面

我向前方发一条射线, 作为向量a
我向敌人发一条射线, 作为向量b
计算点乘结果
如果是正, 即夹角小于90°, 即敌人在我面前180°内
如果是负, 即夹角大于90°, 即敌人在我身后180°内

Vector3 a = me.forward;
Vector3 b = enemy.position - me.position;
float dot = Vector3.Dot(a, b);
if(dot > 0)
{//敌人在我前边
}
还有什么用处呢?

1.求b在a上的投影长度
因为: a·b = |a|·|b|·cosθ
又因为: 投影长度 = |b|·cosθ
则: 投影长度 = a·b ÷ |a|

2.求θ的角度
已知a·b的情况下
cosθ = a·b ÷ |a| ÷ |b|
再用反余弦, 就能求θ的角度

叉乘:

叉乘的结果是个向量
此向量垂直于ab向量所在的平面
冲上或者冲下

用来判断敌人在我左边还是右边

我向前方发一条射线, 作为向量a
我向敌人发一条射线, 作为向量b
叉乘的结果要么冲上, 要么冲下
看y轴的正负就知道是左边还是右边了

Vector3 a = me.forward;
Vector3 b = enemy.position - me.position;
Vector3 cross = Vector3.Cross(a, b);
if(cross.y > 0)
{//敌人在我的......左还是右来着, 忘了
}

叉乘是按照右手定则算的, 而Unity是左手坐标系, 所以结果是相反的, 所以正就是负, 负就是正
(右手定则, 如图, 3个向量相互垂直, 已知其中2个就能确定第3个, 具体是怎么算的, 自己去看百度百科)

其实点乘也可以判左右

//区别就是这次以我的右手方向(me.right)作为向量a

Vector3 a = me.right;
Vector3 b = enemy.position - me.position;
float dot = Vector3.Dot(a, b);
if(dot > 0)
{//敌人在我右边
}
else
{//敌人在我左边
}
在不能转身的2D游戏里一般用不到这些点乘叉乘什么的

如果你在我左边, 则, 你的x必然小于我的x

if(you.position.x < me.position.x)
{//你在我左边
}

以下是从哔哩哔哩<现代计算机图形学入门>看到的

用来判断点是否在三角内


判断点P是否在三角形ABC内:

先做成3个首尾相交的向量AB, BC, CA
先AB×AP, 好, AP在左侧
再BC×BP, 好, 还是BP在左侧
再CA×CP, 好, 还是CP在左侧
好, 都在左侧
证得: P在三角形内

问: 那如果ABC 3个点是顺时针排布的呢?
答: 那就看是否都在右侧
问: 那我们怎么知道他是顺时针还是逆时针呢?
答: 我们不需要知道, 只要是同左或者同右, 就可以判定: 点在三角形内

注意: 还有点P刚好在三角形边上的情况, 那种另外算
注意: 该方法可适用于所有的"凸多边形"

点乘和点乘的矩阵表示:

向量的点乘 a·b 和叉乘 a×b相关推荐

  1. 向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读(经典)

    声明: 本文转自这里 向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组: 向量的点乘,也叫向量的内积.数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求 ...

  2. 向量点乘(内积)和叉乘(外积、向量积)的几何意义和作用

    参考: https://blog.csdn.net/dcrmg/article/details/52416832 https://blog.csdn.net/qingzhuyuxian/article ...

  3. 向量点乘(内积)和叉乘(外积)

    向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组. 1.向量点乘(内积) 向量的点乘,也叫内积,是对两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量. 1)计算 ...

  4. 向量点乘(内积)和叉乘(外积、向量积)概念及几何意义(转载)

    向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组: 向量的点乘,也叫向量的内积.数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是 ...

  5. 向量叉积和点积混合运算_【转】向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读...

    [转]向量点乘(内积)和叉乘(外积.向量积)概念及几何意义解读 向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组: 向量的点乘,也叫向量的内积.数量积,对两个向量执行点乘 ...

  6. 两个向量的点乘和叉乘怎么算_向量点乘(内积)和叉乘(外积、向量积)概念及几何意义解读...

    向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组: 向量的点乘,也叫向量的内积.数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是 ...

  7. Matlab中向量点乘、点积、叉乘计算

    点乘 点乘就是将向量的每个元素对应进行相乘的操作 语法:.* 运行:[1 2 3].*[4 5 6] 结果: 点积 点乘是将向量的元素对应相乘后,加起来 语法:dot(x1,x2) 运行: 叉乘 叉乘 ...

  8. 计算机图形学中向量点乘和叉乘的用途_图形学笔记(一):基础知识

    从这便文章开始整理学习到的计算机图像学相关知识,原则是只写我没在网上找到清楚解释的内容,如果有很好的文章介绍相关内容,我会直接把链接贴上. 首先弄清 Computer Graphics和 Comput ...

  9. 向量叉乘算子、点乘算子与矩阵运算的关系

    文章目录 向量叉乘 运算测试 结论 矩阵与向量点乘 变量 算子 测试 结论 向量叉乘 (a×b)×c=b(a⋅c)−a(b⋅c)(a×b)×c = b(a·c) - a(b·c)(a×b)×c=b(a ...

最新文章

  1. .NET : 再谈谈XML中的命名空间问题
  2. 西霞口船业公司疑遭外商合谋欺诈
  3. 为什么需要这么多编程语言?
  4. 具有关联映射的Hibernate Composite ID
  5. Virtools自己编译播放器
  6. rc mysql common_RR与RC隔离级别下MySQL不同的加锁解锁方式
  7. system类的 静态方法可以启动垃圾回收器。_跟小伟一起学习类加载机制
  8. 实现购物车的Session
  9. 普通人怎么样才能存到钱?
  10. Linux定时任务系统 Cron
  11. easyExcel导出下拉选择框,多sheet数据excle导入导出
  12. 华为鸿蒙跑了个“hello world”!跑通后,我特么开始怀疑人生....
  13. 一名优秀的数据科学家,需要具备哪些基本能力?
  14. Arduino使用TM1637 4位数码管模块
  15. 郑军科幻小说《冰与血》《海与人》
  16. 我要找什么样的女朋友?
  17. 黑马49期全套视频(2018年)
  18. 坐标系转换矩阵和几何转换矩阵的关系
  19. Leetcode 538 - Convert BST to Greater Tree
  20. 如何让Surface RT支持网站的flash

热门文章

  1. C++实现1A2B小游戏(源代码)
  2. autojs 简单使用
  3. GeoServer基础教程
  4. 项目前期调研及其文档编写
  5. 《树莓派用户指南(第3版)》——2.4 在SD卡上安装NOOBS
  6. for循环输出素数探究【java】
  7. LeetCode 953 验证外星词语典[Map] HERODING的LeetCode之路
  8. 系统架构师(java)和大数据架构师
  9. 错题小笔记27——网卡的基本功能与VLAN的作用
  10. odoo14 | 视图报错:没有找到模型:xxx