matlab 叉乘变点乘,向量点乘和叉乘
点乘和叉乘在unity中有广泛的应用:结论点乘判断角度,叉乘判断朝向方位。
点乘:结果为一个常数
又称"点积","数量积”,“内积”(Dot Product, 用*)
对于向量 A = (x1, y1, z1) ,向量 B = (x2, y2, z2),
则向量A点乘向量 B:
A·B = x1 * x2 + y1 * y2 + z1 * z2
同时有
A·B = |A||B|Cosθ
由以上两公式可见,向量的点乘结果为一个标量,即一个数值。
因为夹角θ<=180°,所以配合余弦曲线可以直观地判断出:
当向量 A·B > 0 时,θ < 90° ;
当向量 A·B < 0 时,θ > 90° ;
当向量 A·B = 0 时,θ = 90° ;
向量点乘符合乘法交换律,即:A·B = B·A
Unity项目应用:
1.根据点乘计算两个向量的夹角。θ = arccos(A·B / |A||B|)
2.根据点乘的正负值,得到夹角大小范围,>0,则夹角(0,90)<0,则夹角(90,180),可以利用这点判断一个多边形是面向摄像机还是背向摄像机。
3.根据点乘的大小,得到向量的投影长度,反应了向量的长度关系。
4.利用点积可判断一个多边形是否面向摄像机还是背向摄像机。向量的点积与它们夹角的余弦成正比,因此在聚光灯的效果计算中,可以根据点积来得到光照效果,如果点积越大,说明夹角越小,则物理离光照的轴线越近,光照越强。计算机图形学常用来进行方向性判断,如两矢量点积大于0,则它们的方向朝向相近;如果小于0,则方向相反。
叉乘:结果为一个向量
(又称"叉积",“向量积”,“外积”)(cross product,用x)
定义:C = A x B,其中A B C 均为向量
几何意义是:得到一个与这两个向量都垂直的向量,这个向量的模是以两个向量为边的平行四边形的面积。AxB = |A||B|Sinθ,这个值即就是垂直于A和B组成的平面的向量C的模长!
如果是二维计算:v1( x1, y1)x v2( x2, y2)= x1 * y2 - x2 * y1
v1和v2向量的叉乘运算:相应元素的乘积的和:v1( x1, y1,z1) x v2(x2, y2, z2) = (y1z2 - y2z1)i+(x2z1 - x1z2)j+(x1y2-x2y1)k;
利用三阶行列式计算
|i j k|
|x1 y1 z1|
|x2 y2 z2|
叉乘的右手定则是用来确定叉乘积的方向的。
右手法则:右手的四指方向指向第一个矢量,屈向叉乘矢量的夹角方向(两个矢量夹角方向取小于180°的方向),那么此时大拇指方向就是叉乘所得的叉乘矢量的方向.(大拇指应与食指成九十度)(注意:Unity当中使用左手,因为Unity使用的是左手坐标系)
数学上叉乘的右手法则
叉积的作用:
叉积时一个非常重要的性质是可以通过它的符号判断两向量相互之间的顺逆时针关系:
若P×Q > 0 , 则P在Q的顺时针方向;
若P×Q < 0 , 则P在Q的逆时针方向;
若P×Q = 0 , P与Q共线,可能是同向也可能是反向;
Unity当中叉乘的左手法则,Unity项目应用:
1.根据叉乘得到a,b向量的相对位置,和顺时针或逆时针方位。
简单的说: 点乘判断角度,叉乘判断方向。
形象的说: 当一个敌人在你身后的时候,叉乘可以判断你是往左转还是往右转更好的转向敌人,点乘得到你当前的面朝向的方向和你到敌人的方向的所成的角度大小。
2.得到a,b夹角的正弦值,计算向量的夹角(0,90),可以配合点乘和Angle方法计算出含正负的方向。
3.根据叉乘大小,得到a,b向量所形成的平行四边形的面积大小,根据面积大小得到向量的相对大小。
4.如何判断一个点是否在一个矩形内?
只要判断(AE X AB ) * ( CE X CD) >= 0 就说明E在AB,CD中间夹着,同理计算另两边DA和BC就可以了。(AE X AB )>0,即说明AE在AB的顺时针方向,也就是说点E在AB的下方,同理可知点E在CD的上方。然后在判断AD和CB与点E的关系。
// 计算 |p1 p2| X |p1 p|
float GetCross(Vector2 p1, Vector2 p2, Vector2 p)
{
return (p2.x - p1.x) * (p.y - p1.y) - (p.x - p1.x) * (p2.y - p1.y);
}
//判断点p是否在p1p2p3p4的正方形内
bool IsPointInMatrix(Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, Vector2 p)
{
var isPointIn = GetCross(p1, p2, p) * GetCross(p3, p4, p) >= 0 && GetCross(p2, p3, p) * GetCross(p4, p1, p) >= 0;
return isPointIn;
}
类似于判断一个点是否在一个三角形内?
点在三角形内?
unity中的验证看这里:unity验证
matlab 叉乘变点乘,向量点乘和叉乘相关推荐
- 四维向量叉乘matlab,请教:四维或者更高维向量的叉乘定义
叉乘的集合意义是已知道N维空间中的N-1个基向,可以求出与这N-1个基向量正交的另一个基向量吧. 有的书上说叉乘只在3维上有定义,就是vec1和vec2相乘得: (vec1.y * vec2. ...
- 自己动手证明向量点乘和叉乘的几何意义
目标 对于游戏行业程序员来说,向量"点乘"和"叉乘"是非常熟悉的运算.从代码上看他们运算过程并不复杂:(以下代码选自UE4的"Vector.h&quo ...
- DirectX 向量点乘和叉乘
使用 Length()函数获取向量的长度: 运行一下:还是 不是有效的win32应用程序 错误:下回再整: 然后看一下向量的乘法: 可以调用Add()函数实现两个向量相加: 调用Multiply()实 ...
- [基础]-向量点乘和叉乘
向量的点乘(内积.数量积)和叉乘(外积.向量积) 文章目录 向量的点乘(内积.数量积)和叉乘(外积.向量积) @[TOC] 0.绪论 1.向量点乘(内积) 1.代数角度看 2.从几何方面看 3.常用公 ...
- 两个向量的点乘和叉乘怎么算_向量的点乘和叉乘
向量的点乘和叉乘2019-12-09 15:46:24文/董月 点乘,也叫数量积.结果是一个向量在另一个向量方向上投影的长度,是一个标量.叉乘,也叫向量积.结果是一个和已有两个向量都垂直的向量. 点乘 ...
- bouc wen matlab,基于Matlab磁流变阻尼器Bouc-Wen模型的参数识别
2018年 3月 第 46卷 第 5期 机床与液压 MACHINE TO0L& HYDRAULICS Mat.2018 Vo1.46 No.5 DOI:10.3969/j.issn.1001- ...
- 计算机图形学数学基础——向量点乘和叉乘
简单总结闫老师图形学课程中向量点乘和叉乘及其在图形学中的意义 1. 向量点乘和叉乘 1.1 向量点乘 1.2 向量叉乘 1.3 向量叉乘的意义 1.3.1 判断向量左右位置 1.3.2 判断点的内外位 ...
- 向量点乘和叉乘的应用
一.向量的点乘 1.点乘的计算公式 = 其中 表示的是向量a的模即长度,为向量a与向量b形成的夹角 2.点乘的矩阵表示 = = 3.应用 (1) 计算两个向量之间的夹角,如下: = ...
- 3维向量的点乘叉乘运算
3维向量的点乘叉乘运算 文章目录 3维向量的点乘叉乘运算 三维向量的点乘 三维向量的叉乘 点到直线的距离 点到平面的距离 三维向量的点乘 点乘得到的是对应元素乘积的和,是一个标量,没有方向 V1( x ...
- 求射线与平面的交点,向量点乘和叉乘
/*** 几何点*/public static class Point {public final float x,y,z;public Point(float x,float y,float z){ ...
最新文章
- Const *ptr ptr
- Error was tenMinuteCache Cache: The Disk store is not active.
- mysql @pdept_MySQL 基本管理与常用sql 归结
- 双塔模型没效果了?请加大加粗!
- 通过过滤器防止用户通过url访问不在权限内的菜单
- 解决笔记本重装问题(VISTA系统改为XP系统)
- 使用指针星号转移c语言,C中的指针:何时使用号和星号?
- 从系统集成到虚拟化,IT之路艰难前行...
- Python升级后pip命令失效解决方法
- MySQL - 查询今天的数据(以及昨天、本月、上个月、今年...)
- windows、ubuntu、Red Hat、Solaris 单网卡绑定多个IP
- selenium-远程调用
- 苹果智能家居的未来之路
- 【微信小程序】项目开发-----百度翻译API接口开发微信翻译小程序
- 2017ACM/ICPC沈阳站总结
- 网站挂马的原理与防御
- uniapp路线规划
- IT狂人职场路:揭秘华为百度高管如何炼成?
- android 盒子 红白机 模拟器,安卓FC模拟器
- 原创 | 罗勇:立足敏捷开放,推动直销银行向智能银行迈进