一直以来,我都记不住向量叉乘的结果,每次都要查询。其根本原因在于,我没有去研究过叉乘是如何推导出来的。于是,这次想彻底解决一下。首先要感谢维基百科,它已经把所有问题都描述清楚了。

http://en.wikipedia.org/wiki/Cross_product

而下面的文字,只是我的读书笔记,以加深自己的印象。

首先我们知道 ,对于向量u和v, u x v的结果,是得到一个既垂直于u又垂直于v的向量,假设记作n.

则有下面公式

n = u x v;

而n的方向,是由右手法则决定的。 即伸出右手,四个手指方向从u绕到v. 此时,大姆指的方向,就是n的方向。 我们通常叫做右向量。

引用一下维基百科的图来说明问题,有兴趣的兄弟可以照图比划一下。 (注:图中向量是用的a x b来表示)

有了上面的知识,我们继续向下看。

我们假设向量 u,v,n分别用三个标量来表示。即

u = (Xu,Yu,Zu)

v = (Xv,Yv,Zv)

n = (Xn,Yn,Zn)

则,它们的关系为

Xn = Yu*Zv – Zu*Yv;

Yn = Zu*Xv – Xu*Zv;

Zn = Xu*Yv – Yu*Xv;

即 n = (Yu*Zv – Zu*Yv,Zu*Xv – Xu*Zv,Xu*Yv – Yu*Xv);

而为了验证n与u和v的垂直性,可以使用点乘进行

点乘法则比这个简单多了, u*v = (Xu*Xv + Yu*Yv + Zu*Zv) = dotUV;

如果两个向量垂直,则dotUV = 0;

代入验证一把

u*n = (Xu*(Yu*Zv – Zu*Yv) + Yu*(Zu*Xv – Xu*Zv) + Zu*(Xu*Yv – Yu*Xv));

= Xu*Yu*Zv – Xu*Zu*Yv + Yu*Zu*Xv – Yu*Xu*Zv + Zu*Xu*Yv – Zu*Yu*Xv;

把正负号的因式仔细比对一下,发现刚好可以低消。 结果为0.

v*n 同理可证。

于是,也验证了n与u,v垂直的特性。

如果只是为了应用的话,走到这一步就可以停下了。后面的知识,只是为了满足一下好奇心。

那我们就来看看,这个结论是怎么来的呢? 我们接着来推导。

为了更好地推导,我们需要加入三个轴对齐的单位向量。

i,j,k.

i,j,k满足以下特点

i = j x k; j = k x i; k = i x j;

k x j = –i; i x k = –j; j x i = –k;

i x i = j x j = k x k = 0; (0是指0向量)

由此可知,i,j,k是三个相互垂直的向量。它们刚好可以构成一个坐标系。

这三个向量的特例就是 i = (1,0,0) j = (0,1,0) k = (0,0,1)。

好,那对于处于i,j,k构成的坐标系中的向量u,v我们可以如下表示

u = Xu*i + Yu*j + Zu*k;

v = Xv*i + Yv*j + Zv*k;

那么 u x v = (Xu*i + Yu*j + Zu*k) x (Xv*i + Yv*j + Zv*k)

= Xu*Xv*(ixi) + Xu*Yv*(i x j) + Xu*Zv*(i x k) + Yu*Xv*(j x i) + Yu*Yv*(j x j) + Yu*Zv*(j x k) + Zu*Xv*( k x i ) + Zu*Yv(k x j) + Zu*Zv(k x k)

由于上面的i,j,k三个向量的特点,所以,最后的结果可以简化为

u x v = (Yu*Zv – Zu*Yv)*i + (Zu*Xv – Xu*Zv)j + (Xu*Yv – Yu*Xv)k;

于是,在i,j,k构成的坐标系中。集就是上面的结果。

当i = (1,0,0) j = (0,1,0) k = (0,0,1)时,我们通常省略i,j,k的写法。最终也就得到了我们的右向量。

叉乘的意义

叉乘表示垂直于uxv的右向量。

使用的地方

可以通过叉乘,修正向量关系,从而构建坐标系。 常见的有 摄相机矩阵和TBN空间转换矩阵的构建。

叉乘的矩阵表示法。

很多书上,包括 3D游戏大师编程技巧 上面,都是用的矩阵表示法来说明叉乘。

如下。

它对应的矩阵表示法为

求其代数余子式,可以表示为如下

有了这个,那我们合并公因式i,j,k,则可以得到矩阵表示法

到此,叉乘的内容基本OK了。 值得说明的是,如果对方程组表示成矩阵不熟悉,就会感到不习惯,但是如果多多练习,我想应该是会习惯成自然吧。。。

矩阵的叉乘必须记录下来相关推荐

  1. cross--向量或矩阵的叉乘

    cross--向量或矩阵的叉乘 [功能简介]计算向量的外积(叉乘).(x1,y1,z1)×(x2,y2,z2)=(y1z2-y2z1,z1x2-z2x1,x1y2-x2y1) [语法格式] 1.C=c ...

  2. android程序设计魔方矩阵,【图片】【记录】零基础用c4droid写一个3D魔方软件_c4droid吧_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 9.从前述教程中整理出来的native activity框架 /*请忽视注释中提到的楼层,或结合叜駣的原教程阅读*/ #include #include ...

  3. 矩阵乘法之叉乘和点乘

    矩阵的乘法包含两种:点乘和叉乘. 矩阵点乘的含义是对应元素相乘,例如矩阵,同样存在矩阵, 那么. 矩阵叉乘含义与我们平时理解矩阵相乘一致,即一个矩阵A,若要与另外一个矩阵相乘,另另外一个矩阵的行数必须 ...

  4. 向量和矩阵的点乘和叉乘

    向量 定义:向量是由N个实数组成的一行N列或N行一列的的数组. 点乘:又叫做点积.内积.数量积.标量积,向量a[a1,a2,...,an]和向量b[b1,b2b...,bn]点乘的结果是一个标量,记作 ...

  5. 向量叉乘矩阵表示_向量点乘叉乘、矩阵、OpenGL变化

    向量:向量就是在3D笛卡尔坐标中的一个顶点.单位向量就是长度为1的向量. 标量:标量是一个只有数值大小 没有方向,部分有征服之分.通俗来说标量只有大小没有方向的量. 向量和标量的区别就是 向量是有方向 ...

  6. 矩阵和矢量的叉乘推导和简单实用

    手写了一份叉乘的推导 矩阵的叉乘 叉乘的矩阵形式,a向量变成A*  然后乘b向量 二维矩阵 假设a(a1,a2) b(b1,b2) aXb = a1b2 - a2b1  几何意义就是 aXb是a b组 ...

  7. 【Python学习笔记】多个矩阵点乘和叉乘

    [Python学习笔记]多个矩阵点乘和叉乘 一.定义 二.代码实现 一.定义 点乘,对应元素相乘,点乘对象的行数必须相等,且前者的列数必须与后者相等,或为1,具有广播机制. 叉乘,前者的列数必须和后者 ...

  8. OpenCV基础矩阵求解解析笔记

    文章目录 1. 基础矩阵求解原理 1.1 基础矩阵推导 1.1.1 相机模型 1.1.2 对极几何 1.1.3 基础矩阵性质 1.2 7 7 7点法求解基础矩阵 1.3 8 8 8点法求解基础矩阵 1 ...

  9. ORB-SLAM2 特征点法SLAM 单目 双目 rgbd相机SLAM 单应/本质矩阵恢复运动 小图大图地图优化

    ORB-SLAM2 ORB特征点法SLAM 支持单目.双目.rgbd相机 安装测试 本文github链接 orbslam2 + imu ORB-SLAM是一个基于特征点的实时单目SLAM系统,在大规模 ...

最新文章

  1. T-SQL MD5算法实现
  2. 编辑docker容器中的文件
  3. 『重构--改善既有代码的设计』读书笔记----Remove Middle Man
  4. Establishing SSL connection without server's identity verification is not recommended.
  5. day8网络编程,面向对象1
  6. centos 7 nginx_install.sh
  7. common java socket,JAVA I/O(四)网络Socket和ServerSocket
  8. VC++6遇到的问题(持续更新)
  9. 新辰:传统行业进军互联网 怎样颠覆网络获得新生?
  10. 来听大师讲设计(中)
  11. 高等数学张宇18讲 第三讲 一元函数微分学的概念与计算
  12. 怎么把照片背景变成蓝色
  13. View中TouchSlop,VelocityTracker,GestureDetector
  14. Hadoop初入门的坑
  15. 债券数据集:绿色债券数据集、历时新发、发行债券、DCM定价估值四大指标数据
  16. java毕业设计网站SpringBoot美容院预约管理系统
  17. Excel的VBA使用
  18. 现代C++之手写智能指针
  19. 块元素、行内元素、行内块元素
  20. 美国top10计算机phd申请案例,申请美国计算机PHD全奖应该怎么做

热门文章

  1. 不含粪便废水的抽取设备建筑材料英国UKCA认证—EN 12050-2
  2. 期刊论文 ISO 期刊名称缩写 在线
  3. 阿里云服务器如何买(购买流程图解)
  4. 2018年零基础学习大数据路线图
  5. 使用设计模式防止破窗理论
  6. ubuntuServer+xfce+vnc安装配置教程
  7. Ubuntu 18, Dell Wi-Fi和蓝牙突然失灵的解决办法
  8. turtle库实例——雪景艺术绘图
  9. C语言const用法
  10. 什么是多态,Python多态及用法详解