向量的点乘和叉乘

点乘:

在数学中,数量积(dot product; scalar product,也称为点积)是接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积。

定义:


点乘的值:

u的大小、v的大小、u,v夹角的余弦。在u,v非零的前提下,点积如果为负,则u,v形成的角大于90度;如果为零,那么u,v垂直;如果为正,那么u,v形成的角为锐角。

两个单位向量的点积得到两个向量夹角的cos值,通过它可以知道两个向量的相似性,利用点积可判断一个多边形是否面向摄像机还是背向摄像机。

向量的点积与它们夹角的余弦成正比,因此在聚光灯的效果计算中,可以根据点积来得到光照效果,如果点积越大,说明夹角越小,则物理离光照的轴线越近,光照越强。

运算律:

叉乘:

向量积,数学中又称外积、叉积,物理中称矢积、叉乘,是一种在向量空间中向量的二元运算。与点积不同,它的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量的和垂直。

性质:

几何意义 :
叉积的长度 |a×b| 可以解释成以a和b为邻边的平行四边形的面积。
混合积 [a b c] = (a×b)·c可以得到以a,b,c为棱的平行六面体的体积。
代数规则 : 
反交换律:
a×b= -b×a
加法的分配律:
a× (b+c) =a×b+a×c
与标量乘法兼容:
(ra) ×b=a× (rb) = r(a×b)
不满足结合律,但满足雅可比恒等式:
a× (b×c) +b× (c×a) +c× (a×b) =0
分配律,线性性和雅可比恒等式别表明:具有向量加法和叉积的 R3 构成了一个李代数。
两个非零向量 a 和b 平行,当且仅当a×b=0

拉格朗日公式
这是一个著名的公式,而且非常有用:
a× (b×c) =b(a·c) -c(a·b),

应用:

求解光照的核心在于求出物体表面法线,而叉积运算保证了只要已知物体表面的两个非平行矢量(或者不在同一直线的三个点),就可依靠叉积求得法线。

时间: 2024-11-10 14:34:09

向量的点乘和叉乘的相关文章

点积与叉乘的运算与物理意义

原文:http://blog.csdn.net/jacke121/article/details/55804353 向量是由n个实数组成的一个n行1列(n*1)或一个1行n列(1*n)的有序数组: 向量的点乘,也叫向量的内积.数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量. 点乘公式 对于向量a和向量b:                        a和b的点积公式为: 要求一维向量a和向量b的行列数相同. 点乘几何意义 点乘的几何意义是可以

OpenGL入门学习

说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色来做吗?显然是不行的. 本帖的目的是让大家放弃TC的老旧图形接口,让大家接触一些新事物. OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性. 1.与C语言紧密结合. OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的

图像处理之基础---内积和外积

1.向量的内积 即 向量的的数量积 定义:两个非零向量的夹角记为〈a,b〉,且〈a,b〉∈[0,π]. 定义:两个向量的数量积(内积.点积)是一个数量,记作a·b.若a.b不共线,则a·b=|a|·|b|·cos〈a,b〉:若a.b共线,则a·b=+-∣a∣∣b∣. 2.向量的外积 即 向量的向量积 定义:两个向量a和b的向量积(外积.叉积)是一个向量,记作a×b.若a.b不共线,则a×b的模是:∣a×b∣=|a|·|b|·sin〈a,b〉:a×b的方向是:垂直于a和b,且a.b和a×b按这个次

Linux江湖17:适合数值计算的语言需要具备什么样的特色

2015年1月,我继续徜徉在数值计算的海洋中.这段时间里,我抽空看了Python科学计算和数值分析方面的书,也仔细研读了Octave的用户手册,甚至连古老的Fortran.新兴的R语言我都去逐一了解.对于数值计算的库,我了解了一下Boost的uBLAS,以前也用过OpenCV,当然,了解最多的还是Python中的NumPy.SciPy和pandas. 前几篇随笔搞了不少工具论,所以今天我就专门来论一论编程语言.我的这个Linux江湖系列是一会儿方法论一会儿工具论,每过一段时间也谈谈编程语言.今天

matlab矩阵合并及相关运算

1.matlab允许向量(和矩阵)合并,且matlab提供了两种合并方式,[a,b]和[a;b],两者的结果是不一样的. a=rand(2,3): b=rand(2,3): c=[a;b]: d=[a,b]: c的结果是将b整体合并到a 的下边,而d的结果是整体将b合并到a 的右边. 2.创建等差向量组 a=[1:2:11] 注意涉及到向量内部对应数据之间的运算时一定要用点运算符号,(.)例如,求表达式b=a^2时应该写作 b=a.^2 也可以利用linspace来创建等差向量,linspace

深入浅出——搞懂卷积神经网络误差分析(一)

第一部分 全连接网络的权值更新 卷积神经网络使用基于梯度的学习方法进行监督训练,实践中,一般使用随机梯度下降(机器学习中几种常见的梯度下降方式)的版本,对于每个训练样本均更新一次权值,误差函数使用误差平方和函数,误差方式采用平方误差代价函数. 注:本文主要按照参考文献中内容来写的,其中某些部分加入了自己解释,此文内容不断更新充实中,直到让人可以看完之后完全了解卷积神经网络的计算过程. 1.1 前向传播中样本的误差以及每层的输出 全连接区的第l层(l来表示当前层)的输出函数为: 全部训练集上的误差

【转】Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

原作者:zouxy09 原文链接:http://blog.csdn.net/zouxy09/article/details/9993371 Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 [email protected] http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己

Input gameobject vector3 c#

Input类中的常用方法 bool w=Input.GetKey(KeyCode.W);//检测是否按下键盘W Input.GetKeyDown(KeyCode.W);//表示检测按下时 Input.GetKeyUp(KeyCode.W);//表示检测按键弹起时 Input.GetMouseButton(0);//参数0表示左键,1表示右键,2表示中键 //GetMouseUp和GetMouseDown的方法与键盘的原理类似 if (Input.GetKeyDown("space"))

Unity常见面试题大全

1.       [C#语言基础]请简述拆箱和装箱. 答: 装箱操作: 值类型隐式转换为object类型或由此值类型实现的任何接口类型的过程. 1.在堆中开辟内存空间. 2.将值类型的数据复制到堆中. 3.返回堆中新分配对象的地址. 拆箱操作: object类型显示转换为值类型或从接口类型到实现该接口值类型的过程. 1.判断给定类型是否是装箱时的类型. 2.返回已装箱实例中属于原值类型字段的地址. 2.        [.NET(C#)] attribute,property,markup,ta