Unity中的点乘和叉乘
Unity中的点乘和叉乘
点乘很多资料上都是说表示两个向量的相似度,具体是怎么表示相似度,结果大小如何表示相似度,越大越相似,还是越差,如果细细去推导才发现很多东西以前的理解是有错误或者说是不清不楚的。
点乘的定义:
a·b=|a|·|b|cos<a,b> 【<a,b>表示向量a,b的夹角,取值范围为[0,180]】
根据上面的公式可以知道 a·b 可以看出结果是一个标量
点乘可以求出两个向量的夹角,但是点乘的结果不是两个向量的夹角。
假设上面的oa长度为1 ob长度为2 角度aoc为30°
a·b=12cos30≈1.732 这个几何意义无法用相似度或者夹角来表示的。
几何意义:是一条边向另一条边的投影乘以另一条边的长度.
表示向量的夹角的几何意义:
cos<a,b> =(a·b)/(|a|·|b|)
向量的叉乘
定义:c = a x b,其中a b c均为向量
可以看出向量叉乘得到的是一个向量,很多看过资料的都知道结果表示是垂直于两个向量组成面的方向那么有两个问题需要进一步的解答。
问题1:在Unity中垂直方向有两个的,比如垂直于地面是朝上的也可以朝下的,具体朝哪个方向。
问题2:在Unity中向量是有大小和方向的,问题1 计算出了方向,那请问叉乘后向量的大小是多少。
两个向量 a b
a=(a1,a2,a3)
b=(b1,b2,b3)
i j k来表示三维坐标轴
a=(a1i,a2j,a3k)=a1i+a2j+a3k
b=(b1i,b2j,b3k)=b1i+b2j+b3k
已知
ii=0 jj=0 kk=0
ij=k jk=i ki=j
ji=-k kj=-i i*k=-j
axb=(a1i+a2j+a3k)*(b1i+b2j+b3k)
根据上面推导可以得出结论
axb=(a2b3-a3b2)i+(a3b1-a1b3)j+(a1b2-a2b1)k
结果写成多项式
变换形式得到叉乘矩阵:
称为a向量的叉乘矩阵。
性质1:c⊥a,c⊥b,即向量c与向量a,b所在平面垂直
性质2:模长|c| = |a||b| sin<a,b>
方向上Unity为左手坐标系,最终的方向是根据向量a到向量b的旋转方向来定义的,建议代码实际体验
Unity中的点乘和叉乘相关推荐
- UNITY中利用点乘和叉乘判断方向 2D
void DirectionJudge(){Vector3 dir = mousePositionInWorld - transform.position;dir.z = 0f;var magiDir ...
- 【游戏开发小技】Unity中实现Dota里的角色技能地面贴花效果(URP | ShaderGraph | Decal)
本文最终效果 文章目录 一.前言 二.环境准备 1.URP环境准备 2.技能范围图案 二.方案一:写Shader实现 1.Shader脚本:UrpDecal.shader 2.材质球 3.创建Cube ...
- 【游戏开发小技】Unity中实现Dota里的角色技能地面贴花效果(URP ShaderGraph Decal)
本文最终效果 文章目录 一.前言 二.环境准备 1.URP环境准备 2.技能范围图案 二.方案一:写Shader实现 1.Shader脚本:UrpDecal.shader 2.材质球 3.创建Cube ...
- unity中3D数学相关类、属性、方法、用途总结+超级综合的案例
这篇内容将与unity中移动旋转的控制密切相关,有关移动旋转. 主要涉及到的类:Vector3,Mathf,Quaternion,Transform. 1.三角函数 其实关于三角函数的使用并不会很常见 ...
- 一种城市道路网络的随机生成方式(Unity中可视化)
一种城市道路网络的随机生成方式(Unity中可视化) 1. 说在开头 2. 有限元网格划分 2.1. 什么是有限元 2.2. 前沿推进法/波前推进法(Advancing Front Technique ...
- Unity 中的坐标系
参考 1.Shadow Map 原理和改进 2.[OpenGL]02 - OpenGL中的坐标系 3.矩阵理论 (这个是京东地址) 4.维基百科(文中的数学概念出处) 5.msdn mul 6.msd ...
- unity中实现镜子效果
本文转载自http://blog.csdn.net/zhangxiao13627093203/article/details/52403186 上一篇介绍了有关镜子的制作,有关理论部分的内容我会在后续 ...
- 图形学中的抗锯齿讨论以及在unity中的应用
抗锯齿(Anti-Aliasing)是图形学中,很重要的一个部分.本文旨在做一些分析总结,并对平时不理解的细节,做了调研,但毕竟不是做GPU行家,所以有不对的地方,欢迎拍砖^^. 1 什么是锯齿 下图 ...
- 学习在Unity中创建一个动作RPG游戏
游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...
最新文章
- python打印空心平行四边形的面积公式_打印等腰三角形和空心平行四边形
- 不只是用于研究:使用Nvivo获取各种定性数据
- 一个ABAP程序,能够下载指定的note到本地
- Python 3实现k-邻近算法以及 iris 数据集分类应用
- 【Python】表白程序
- PHP 中 this,self,parent 的区别、用法
- 张一鸣的大学四年收获及工作感悟
- TDR/TDT测量原理分析
- matlab 关于interpreter的使用
- SparkStreaming的背压机制
- python pool_Python pool.Pool方法代码示例
- 技术分享 | 使用 Zabbix + Grafana 搭建服务器监控系统
- 蓝桥2——Beaver's Calculator
- jmu-python-生日悖论(熟练掌握随机数的生成以及检查重复)
- Android系统解除USER版本无法进入Recovery模式限制
- Office 365身份认证--深度解析(二)
- 如何drop有default constrain…
- 时隔3年,再次折腾BlackBerry 8830!
- 关于AIOT简易理解.
- 如何用java做一个桌面游戏