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 ...
随机推荐
- ECMAScript6之Set结构和Map结构
set数据结构 ES6提供了一个新的数据结构,Set,Set和Array数组相似,但是Set里没有重复的数据,可以说是一个值的集合. 同时,Set数据结构有以下属性和方法: size:返回成员总数 a ...
- 中文版的jqGrid实例大全
中文版的jqGrid实例大全 http://blog.mn886.net/jqGrid/
- NGINX----源码阅读---have配置脚本
/auto/have have配置脚本负责在$NGX_OBJS/ngx_auto_config.h定义宏 # Copyright (C) Igor Sysoev # Copyright (C) Ngi ...
- CUDA开发时用到的各种Linux命令
cat 读取文件中的全部内容. 例:cat cuda_add.cu
- OSI七层模型详解
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...
- Django- 'WSGIRequest' object has no attribute 'user'
在用django建第一个blog的时候,进入localhost:8000/admin的时候报上面的错: 查了好多资料,最后还是没解决,最后发现原因是我第一次建这个blog工程的时候用的django的版 ...
- 关于Android平台的搭建的心得---汪永骏
我本来是.net开发的,但看到目前互联网形式都朝着移动端开发迈进.大势所向,我便也开始学习Android的开发 今天就是要聊一下,我对Android开发的一些心得.今天讲的是,我在搭建Android平 ...
- spring定时任务的几种实现方式
Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将 ...
- android 给layout布局添加点击事件
<方法一> 1,在代码中加入如下红色代码,不然会被包含在其中的控件把焦点抢占,此时子控件无需设置clickable和focuseable <RelativeLayout ...
- 2px边框,4分之1内边框实现选中功能实现
有时候我们要实现如下选中效果: 我给出一种解决办法: 首先选中的时候,加一个class(active),未选中的全部加一个class(inactive),外层给一个1px border,每个选项给一个 ...