点积应用-求两个向量夹角
2016-07-05 13:50
330 查看
之前,由点积求两条直线的夹角,只知道会用,不知道原量,今天看计算机图形学,才知道其原量,待记录如下:
点积最重要的应用时计算两个向量的夹角,或者两条直线的夹角。图给出了二维的情况,其中向量b和向量c与x轴的夹角分别为B,C,从基本三角函数可得:
b = (|b| cosB, |b| sinB)
c = (|c| cosC, |c| sinC)
将上式代入点积等式,将它们的对应的分量相乘,再把结果相加,于是得到:
b.c = |b| |c| cosB cosC + |b| |c| sinB sinC
再次应用三角函数等式,得到
b.c = |b| |c| cos(B-C)
最终,对于任意两个向量b和c,我们有
b.c = |b| |c| cos(@),即con(@) = b.c / (|b| |c|)
注:@为b和c之间的夹角。
其程序实现的例子是:
点积最重要的应用时计算两个向量的夹角,或者两条直线的夹角。图给出了二维的情况,其中向量b和向量c与x轴的夹角分别为B,C,从基本三角函数可得:
b = (|b| cosB, |b| sinB)
c = (|c| cosC, |c| sinC)
将上式代入点积等式,将它们的对应的分量相乘,再把结果相加,于是得到:
b.c = |b| |c| cosB cosC + |b| |c| sinB sinC
再次应用三角函数等式,得到
b.c = |b| |c| cos(B-C)
最终,对于任意两个向量b和c,我们有
b.c = |b| |c| cos(@),即con(@) = b.c / (|b| |c|)
注:@为b和c之间的夹角。
其程序实现的例子是:
//求当前四边形各顶点之间的最短距离 for(int i=0;i<4;i++) { Point side = approxCurve[i] - approxCurve[(i+1)%4];//这里应该是2维的相减 float squaredSideLength = side.dot(side);//求2维向量的点积,就是XxY minDist = min(minDist,squaredSideLength);//找出最小的距离 }
相关文章推荐
- 在centos里安装Nginx
- 理解Windows内核模式与用户模式
- 【工具】Linux下VIM编辑器的使用
- Xcode7 使用NSURL发送HTTP请求报错
- sql server和mysql常用字段类型对比
- php 打包下载zlib函数
- centos6.5分区与文件系统
- map()函数浅析
- jquery文件上传控件 Uploadify
- C语言的变量
- quotes_historical_yahoo
- [UnityShader3]光之翼效果
- 图片上滑遮罩
- Shell脚本安装成服务加入系统启动-service XX does not support chkconfig
- iOS7到iOS8 一个通用的横竖屏幕切换总结
- Composer安装文档
- 窥探PTAM之模板搜索
- Linux-awk命令
- STM32F4_USART配置及细节描述
- jQuery无刷新上传之uploadify简单试用