Dot Product
These are vectors:

They can be multiplied using the "Dot Product" (also see Cross Product).
Calculating
You can calculate the Dot Product of two vectors this way:

a · b = |a| × |b| × cos(θ)
Where:
|a| is the magnitude (length) of vector a
|b| is the magnitude (length) of vector b
θ is the angle between a and b
So we multiply the length of a times the length of b, then multiply by the cosine of the angle between a and b
OR you can calculate it this way:

a · b = ax × bx + ay × by
So we multiply the x's, multiply the y's, then add.
Both methods work!
Example: Calculate the dot product of vectors a and b:

a · b = |a| × |b| × cos(θ)
a · b = 10 × 13 × cos(59.5°)
a · b = 10 × 13 × 0.5075...
a · b = 65.98... = 66 (rounded)
a · b = ax × bx + ay × by
a · b = -6 × 5 + 8 × 12
a · b = -30 + 96
a · b = 66
Both methods came up with the same result (after rounding)
Also note that we used minus 6 for ax (it is heading in the negative x-direction)
Note: you can use the Vector Calculator to help you.
Why cos(θ) ?
OK, to multiply two vectors it makes sense to multiply their lengths together but only when they point in the same direction.
So we make one "point in the same direction" as the other by multiplying by cos(θ):


We take the component of a
that lies alongside b
Like shining a light to see
where the shadow lies
THEN we multiply !
It works exactly the same if we "projected" b alongside a then multiplied:
Because it doesn't matter which order we do the multiplication:
|a| × |b| × cos(θ) = |a| × cos(θ) × |b|

Right Angles
When two vectors are at right angles to each other the dot product is zero.
Example: calculate the Dot Product for:

a · b = |a| × |b| × cos(θ)
a · b = | a| × | b| × cos(90°)
a · b = | a| × | b| × 0
a · b = 0
a · b = ax × bx + ay × by
a · b = -12 × 12 + 16 × 9
a · b = -144 + 144
a · b = 0
This can be a handy way to find out if two vectors are at right angles.
Three or More Dimensions
This all works fine in 3 (or more) dimensions, too.
And can actually be very useful!
Example: Sam has measured the end-points of two poles, and wants to know the angle between them:

We have 3 dimensions, so don't forget the z-components:
a · b = ax × bx + ay × by + az × bz
a · b = 9 × 4 + 2 × 8 + 7 × 10
a · b = 36 + 16 + 70
a · b = 122
Now for the other formula:
a · b = |a| × |b| × cos(θ)
But what is |a| ? It is the magnitude, or length, of the vector a. We can use Pythagoras:
- |a| = √(42 + 82 + 102)
- |a| = √(16 + 64 + 100)
- |a| = √180
Likewise for |b|:
- |b| = √(92 + 22 + 72)
- |b| = √(81 + 4 + 49)
- |b| = √134
And we know from the calculation above that a · b = 122, so:
a · b = |a| × |b| × cos(θ)
122 = √180 × √134 × cos(θ)
cos(θ) = 122 / (√180 × √134)
cos(θ) = 0.7855...
θ = cos -1(0.7855...) = 38.2...°
Done!
I tried a calculation like that once, but worked all in angles and distances ... it was very hard, involved lots of trigonometry, and my brain hurt. The method above is much easier.
Cross Product
The Dot Product gives a scalar (ordinary number) answer, and is sometimes called the scalar product.
But there is also the Cross Product which gives a vector as an answer, and is sometimes called the vector product.
Dot Product的更多相关文章
- [UCSD白板题] Minimum Dot Product
Problem Introduction The dot product of two sequences \(a_1,a_2,\cdots,a_n\) and \(b_1,b_2,\cdots,b_ ...
- FB面经Prepare: Dot Product
Conduct Dot Product of two large Vectors 1. two pointers 2. hashmap 3. 如果没有额外空间,如果一个很大,一个很小,适合scan小的 ...
- CUDA Samples: dot product(使用零拷贝内存)
以下CUDA sample是分别用C++和CUDA实现的点积运算code,CUDA包括普通实现和采用零拷贝内存实现两种,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程C ...
- 向量点积(Dot Product),向量叉积(Cross Product)
参考的是<游戏和图形学的3D数学入门教程>,非常不错的书,推荐阅读,老外很喜欢把一个东西解释的很详细. 1.向量点积(Dot Product) 向量点积的结果有什么意义?事实上,向量的点积 ...
- CUDA Samples: Dot Product
以下CUDA sample是分别用C++和CUDA实现的两个非常大的向量实现点积操作,并对其中使用到的CUDA函数进行了解说,各个文件内容如下: common.hpp: #ifndef FBC_CUD ...
- vector - vector product
the inner product Givens two vectors \(x,y\in \mathbb{R}^n\), the quantity \(x^\top y\), sometimes c ...
- CF 405C Unusual Product(想法题)
题目链接: 传送门 Domino Effect time limit per test:1 second memory limit per test:256 megabytes Descrip ...
- Cross Product
Cross Product These are two vectors: They can be multiplied using the "Cross Product" (als ...
- 对NumPy中dot()函数的理解
今天学习到numpy基本的运算方法,遇到了一个让我比较难理解的问题.就是dot函数是如何对矩阵进行运算的. 一.dot()的使用 参考文档:https://docs.scipy.org/doc/num ...
随机推荐
- 在ueditor编辑器的光标停留处插入内容
业务场景: 首先在ueditor编辑器中插入一段文本,然后我想在文本的某个位置(光标停留处)插入一个字符串,这个字符串是从页面的其他地方选择得来的. 注意,当我们点击ueditor编辑器以外的地方,编 ...
- iScroll 下 a 标签失效
遇到个莫名其妙的问题,iScroll 下的 a 标签点击没有反应了,不管怎么调整 z-index 都无效果,很是无语. 查找半天后找到解决方法: $(function(){ new IScroll(' ...
- RedHat9.0下载地址
RedHat下载:http://archive.download.redhat.com/pub/redhat/linux/9/en/iso/i386/
- FormsCookieName保存登录用户名的使用
一,写一个类来实现 using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- C语言之字符串典型例题解析
今天又遇见几个好题,和以前的一些凑一块写一篇文章,作为我延迟去自习室的一个借口吧. 首先是第一题 int fun(char* s){ char* t = s; while(*t++); return ...
- 7.MyBatis延时加载
1.创建javaWeb项目MyBatis_Lazy并在WebRoot下的WEB-INF下的lib下添加如下jar文件 cglib-nodep-2.1_3.jar log4j-1.2.17.jar my ...
- 关于mongodb的一些笔记
1.以服务的形式安装mongodb dos -- 进入到mongodb的bin目录下,执行 D:\mongodb\bin>mongod --logpath D:\mongodb\logs\mon ...
- unity笔录
----------------------------unity项目在启动splash的时候黑屏 原因不明------------------测试复制项目 用剔除法测试 笔录开始 先用原版本打包 ...
- Hadoop fs 命令详解
1. 环境:hadoop-2.6.0 2. 参数说明: hadoop fs [-appendToFile <localsrc> ... <dst>] [-cat [-ignor ...
- c++ inline关键字的理解
1. inline是实现修饰符,而非声明修饰符,所以应该用于实现部分的修饰(你也可以放置inline在声明,但是没有必要) 2. 所有中类中定义的函数都默认声明为inline函数,所有我们不用显示地去 ...