三维向量的点积(Dot Product)

点乘比较简单,是相应元素的乘积的和:
   V1( x1, y1, z1)·V2(x2, y2, z2) = x1*x2 + y1*y2 + z1*z2;
注意结果不是一个向量,而是一个标量(Scalar)。点乘有什么用呢,我们有:
   A·B = |A||B|Cos(θ)
θ是向量A和向量B见夹角。这里|A|我们称为向量A的模(norm)。这样我们就和容易计算两条线的夹角:

Cos(θ) = A·B /(|A|*|B|)

叉乘(cross product)

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

则有下面公式

n = u x v;

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

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

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

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

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

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空间转换矩阵的构建。

点到线的距离

找出一个点和一条线间的距离是经常遇见的几何问题之一。假设给出三个点,A,B和C,你想找出点C到点A、B定出的直线间距离。第一步是找出A到B的向量AB和A到C的向量AC,现在我们用该两向量的叉积除以|AB|,这就是我们要找的的距离了(下图中的红线)。
    d = (AB x AC)/|AB|

(AB X AC)/2是三角形ABC的面积,这个三角形的底是|AB|,高就是C到AB的距离。有时叉积得到的是一个负值,这种情况下距离就是上述结果的绝对值。
当我们要找点到线段的距离时,情况变得稍稍复杂一些。这时线段与点的最短距离可能是点到线段的某一端点,而不是点到直线的垂线。例如上图中点C到线段AB的最短距离应该是线段BC。我们有集中不同的方法来判断这种特殊情况。第一种情况是计算点积AB Bc来判定两线段间夹角。如果点积大于等于零,那么表示AB到BC是在-90到90度间,也就是说C到AB的垂线在AB外,那么AB上到C距离最近的点就是B。同样,如果BAAC大于等于零,那么点A就是距离C最近的点。如果两者均小于零,那么距离最近的点就在线段AB中的某一点。

点到面的距离

设某三维平面表达式为
a*x+b*y+c*z+d = 0;
则其法向量即为: (a,b,c).
任意一点 p = (x1, y1, z1)到该平面的距离为:
(a*x1 + b*y1 + c*z1+d) / (a*a + b*b +c*c)


三维向量的简单运算(点积、叉积及点到直线的距离)相关推荐

  1. hdu 1174:爆头(计算几何,三维叉积求点到线的距离)

    爆头 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  2. 叉积求点到平面距离_OpenCV计算点到直线的距离 数学法

    我们在检测图像的边缘图时,有时需要检测出直线目标,hough变换检测出直线后怎么能更进一步的缩小区域呢?其中,可以根据距离来再做一判断,就涉及到了点与直线的距离问题. 点到直线距离代码如下: //== ...

  3. 点到直线的距离c语言程序,计算几何算法2. 关于线和点到线的距离(二维和三维)...

    关于直线 直线方程 点到直线的距离 用两点表示的直线 2d隐式表示的直线的情形 参数方程表示的直线 一个点到射线或线段的距离 代码实现 距离计算是计算机图形学和计算几何的基本问题,而且有很多关于这方面 ...

  4. 使用向量的方法来计算点到直线的距离

    使用向量的方法效率更高,更简单. 首先要了解什么是向量,什么是向量的模 主要用到了解析几何里的几个公式 a * b = | a | * | b | * cos(x),其中x为向量a,b的夹角 | a ...

  5. 使用向量的方法计算点到直线的距离

    基础: 单位向量:模等于1的向量,一个非零向量除以它的模,可得所需单位向量. 向量的加减法: 向量的投影:设两个非零向量a与b的夹角为θ,则将|b|·cosθ 叫做向量b在向量a方向上的投影 向量的点 ...

  6. 3D数学 自定义三维向量类进行运算

    3D数学 自定义向量类进行运算 设计一个3维向量类,可以实现如下运算: 零向量 负向量 向量大小.长度.模 标量与向量的乘除法 单位向量 向量的加法和减法 距离公式 向量点乘 向量叉乘 由于原理很简单 ...

  7. HDU1174(空间点到直线的距离,用叉积)

    爆头 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  8. 三维几何基础大合集(三维点积叉积、点线面、凸包)《计算几何全家桶(三)》

    整理的算法模板合集: ACM模板 目录 一.三维基础操作 1.1 三维点积(Dot3) 1.2 三维叉积(Cross3) 1.3 矢量差(Subt) 1.4.1 返回ab,ac,ad的混合积(Volu ...

  9. 电子计算机应用地质地貌,岩土基础整理 一、高数24 1、空间解析几何与向量代数 两点间的距离,向量数量积,向量向量积,平面方程,两平面夹角,点到平面的距离,点... - 雪球...

    来源:雪球App,作者: 超级奶爸xujunhorse,(https://xueqiu.com/3442498082/131579485) 一.高数24 1.空间解析几何与向量代数 两点间的距离,向量 ...

最新文章

  1. androidstudio集成ijkplayer教程
  2. C#常量——const和readonly
  3. SICP学习笔记(1.1.4~1.1.5)
  4. 解锁一个新技巧,让你舒服到不想起床
  5. 用Log4Net来记录系统的日志信息
  6. PostgreSQL的登录、创建用户、数据库并赋权
  7. (转)微信公众平台开发02-接收信息及回复信息
  8. @Pathvariable的参数允许为空的问题的解决
  9. 抽象类与接口的区别与联系
  10. 高度为5的3阶b树含有的关键字个数_B-树和B+树的应用:数据搜索和数据库索引...
  11. Python 3.65 安装geopandas
  12. DNS服务器配置图解过程(1)
  13. IEEEtran模板的参考文献管理问题a missing \item. \begin{thebibliography}{}
  14. 青少年软件编程(Python)等级考试试卷一级(判断题)2021-9
  15. 并行接口芯片8255与定时器/计数器接口芯片8253
  16. 【关于油猴的安装和使用的教程】
  17. 抓包工具之wireshark安装和使用
  18. django arya插件对数据库操作使用,reverse发娘解析url的使用
  19. 组件-Element—Badge(标记)
  20. Git——git的简单使用以及连接gitee的远程仓库[经验 y.2]

热门文章

  1. 你不懂我,我不怪你 余秋雨
  2. html5锥形,html – 使用CSS的锥形div
  3. GIT(一):版本控制、git历史、git基本概念、git安装配置、git版本管理(本地和远程)、git分支管理
  4. 极坐标与笛卡尔坐标的转换公式
  5. 【福利时刻】Java面试题84集系列全集!有需要的小伙伴赶紧过来保存啦!
  6. 第05章 Tableau数据可视化
  7. 【新日语(2)】第4課 人びとの生活をもっと豊かにしなければなりません
  8. Docker——docker-registry私有仓库集群构建
  9. vue 2.0 结合iview UI组件使用分页功能
  10. cadnece设置等长