转:点积&叉积

一、点积(又称“数量积”、“内积”)

1、理论知识

在数学中,点积的定义为a·b=|a|·|b|cos<a,b> 【注:粗体小写字母表示向量,<a,b>表示向量a,b的夹角,取值范围为[0,π]】。从定义上,我们知道向量的点积得到的是一个数值。而不是向量(这点大家要注意了!要与叉积进行区别)。另外点积中的夹角<a,b>没有顺序可言,即<a,b>=<b,a>(或a·b=b·a所以我们可以通过点积得到两个向量之间的夹角。<a,b>= arccos(a·b / (|a|·|b|))。并且通过点积的正负值,我们可以判断两个向量的方向关系。如果为正,即>0,他们夹角为(0,π/2)。如果为负,夹角为(π/2,π)。

2、Unity3D中应用

在Unity中,点积表示为Vector3.Dot(Vector3,Vector3):float——参数为2个向量,返回值为浮点型。

[csharp] view plain copy

  1. using UnityEngine;
  2. using System.Collections;
  3. public class Vector3_Dot : MonoBehaviour {
  4. //向量a
  5. Vector3 a;
  6. //向量b
  7. Vector3 b;
  8. void Start()
  9. {
  10. //向量的初始化
  11. a = new Vector3(3, 0, 0);//x轴方向,长度为3
  12. b = new Vector3(Mathf.Sqrt(2), Mathf.Sqrt(2), 0);//(根号2,根号2,0)
  13. }
  14. void OnGUI()
  15. {
  16. //点积的返回值
  17. float c=Vector3.Dot(a,b);
  18. //向量a,b的夹角,得到的值为弧度,我们将其转换为角度,便于查看!
  19. float angle=Mathf.Acos( Vector3.Dot(a.normalized,b.normalized))*Mathf.Rad2Deg;
  20. GUILayout.Label("向量a,b的点积为:" + c);
  21. GUILayout.Label("向量a,b的夹角为:" + angle);
  22. }
  23. }

a.normalized表示该方向的单位向量,即方向与向量a相同,长度为1的向量。Mathf.Acos()即数学中的arccos()函数。Mathf.Rad2Deg表示将弧度转化为角度。

结果如下图:

二、叉积(又称“向量积”、“外积”)

1、理论知识

数学上的定义:c=axb【注:粗体小写字母表示向量】其中a,b,c均为向量。即两个向量的叉积得到的还是向量!

性质1:c⊥a,c⊥b,即向量c垂直与向量a,b所在的平面。

性质2:模长|c|=|a||b|sin<a,b>

性质3:满足右手法则。从这点我们有axb ≠ bxa,而axb = - bxa。所以我们可以使用叉积的正负值来判断向量a,b的相对位置,即向量b是处于向量a的顺时针方向还是逆时针方向。

2、Unity中应用

在Unity中,叉积表示为Vector3.Cross(Vector3,Vector3):Vector3——参数为2个向量,返回值也为向量。

[csharp] view plain copy

  1. using UnityEngine;
  2. using System.Collections;
  3. public class Vector3_Cross : MonoBehaviour {
  4. //向量a
  5. Vector3 a;
  6. //向量b
  7. Vector3 b;
  8. void Start()
  9. {
  10. //向量的初始化
  11. a = new Vector3(3, 0, 0);//x轴方向,长度为3
  12. b = new Vector3(0, 4, 0);//y轴方向,长度为4
  13. }
  14. void OnGUI()
  15. {
  16. //叉积的返回值
  17. Vector3 c = Vector3.Cross(a, b);
  18. Vector3 d = Vector3.Cross(b, a);
  19. //向量a,b的夹角,得到的值为弧度,我们将其转换为角度,便于查看!
  20. float angle = Mathf.Asin(Vector3.Distance(Vector3.zero, Vector3.Cross(a.normalized, b.normalized))) * Mathf.Rad2Deg;
  21. GUILayout.Label("向量axb为:" + c);
  22. GUILayout.Label("向量bxa为:" + d);
  23. GUILayout.Label("向量a,b的夹角为:" + angle);
  24. }
  25. }

Vector3.Distance()用于计算2个Vector3的距离,在这里我们可以得到叉积向量的模长。

结果如下图:

时间: 2024-08-05 23:41:43

转:点积&叉积的相关文章

计算几何-点积/叉积

关于本篇博文 作者 北屿 http://www.cnblogs.com/beiyuoi/ 转载请保留该文字 写在前面 个人总结的点积叉积的概念和应用qwq. 更新记录 20160521-点积/叉积定义 几何意义 运算 基础应用 性质 20160609-题目简讲-Toys 点积 点积,又名点乘积.数量积,高中数学课本必修四向量提到了 定义 \[a\cdot b=\left|a\right|\times\left|b\right|cos<a,b>\] 几何意义 \(a\)在\(b\) 上的正投影乘

[BZOJ]2017省队十连测推广赛1

听学长说有比赛就随便打一打. A.普通计算姬 题目大意:给出一棵带权树,支持一下两种操作:1.修改一个点的权值:2.给出l,r,询问以点l为根的子树和.点l+1为根的子树和.点l+2为根的子树和--点r为根的子树和的总和.(点数.操作数不超过10^5) 思路:感觉是三题中最难的.给出的[l,r]区间在树上没有实际意义,不好利用数据结构维护.考虑若不修改,可以一遍dfs算出每个点对应的dfs序,这样每棵子树都对应一个dfs序的区间,前缀和一下就能O(1)查子树和,再按点的编号顺序把子树和前缀和一下

省选板块

部分摘抄自网络 同样的,加粗是重点,星号是选学 图论 网络流(dinic,ISAP选一个,费用流写EK就行.*zkw费用流),二分图 点分治,边分治,*动态点分治 树链剖分,动态树,树分块 虚树,*prufer编码 *仙人掌算法 数据结构 带权并查集 Splay(作为平衡树和维护区间),Treap,替罪羊树 线段树(权值线段树),树状数组,*线段树合并 树套树 主席树,可持久化trie,*其它可持久化数据结构 二维线段树,*KDtree *舞蹈链,*二进制分组,*左偏树,*超哥线段树,*后缀平衡

(转载)3D 图形编程的数学基础(1) 向量及其运算

原文地址:http://blog.csdn.net/vagrxie/article/details/4960473 版权声明:本作品由九天雁翎创作,采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可.http://www.jtianling.com 目录(?)[+] write by 九天雁翎(JTianLing) -- blog.csdn.NET/vagrxie 讨论新闻组及文件 Technorati 标签: 向量,3D,坐标系,规范化,点积,叉积 说明 因为大学时在高等数学课程中学

2014暑假ACM训练总结

2014暑假ACM训练总结报告 匆匆之中,一个暑假又过去了,在学校训练的这段日子真的是感觉日子过得好快啊! 时光如箭,日月如梭! 匆忙的学习之中一个暑假就这样结束了,现在就来写一些总结吧,供自己以后阅读和回忆吧! 2014年7月14我们即可1303考完了最后一科模拟电路,也宣告了暑假的到来!本来有刚好两 星期的时间可以回家或是去做其他的事,然后我在学校呆了几天,无聊之余便回家了.在家呆了大概 7天,便正式回校了,准备学校的ACM的训练去了. 先亮一下暑假的训练计划吧! 集训详情: 第一周回顾知识

痴心不改

 2014ACM集训总结 第二次参加ACM集训,可这一次的集训感受大不同以往. 首先这假期学的内容不是那么简单,在学习和刷题的过程中,智商压制现象很严重. 其次,这个假期发生了很多事情,身边的家伙陆续的退役,其实还有我的两个队友. 所以,心中很矛盾,也很复杂,无法用语言表达,只能慢慢调整,让自己恢复正常的感觉. 最后的4场比赛,没有真心的投入,一场中途才赶到实验室,两场提前离场.总的来说,是我逃避现实,我不知道如何面对现实. 一个假期过后,该学会的没有学会,反而留下一堆乱麻,不知道从何捋起.

【转】计算几何题目推荐

打算转下来好好做计算几何了. 原文地址:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html 其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠.3.要注意代码的组织,因为计算几何的题目很容易上两百行

poj 2780 Linearity 最多共线点经典问题

题意: 给n个点,其中最多有多少点共线(n<1000). 分析: 这是一个经典问题,朴素n^3解法:枚举n^2条直线,判断每条直线与多少点相交,复杂度n^3.明显会超时.这是n^2logn的解法:枚举每个点,对某个点与其他点连的n条直线按斜率排序,设这些直线中斜率相同的直线有k条,则k更新答案.这里想着重说一下斜率的问题,网上很多代码都是直接算斜率的,但计算几何的题目不推荐用斜率,最好用叉积代替有关斜率的一切计算,因为1)斜率的取值范围非常大,如果有中间计算有乘法很容易爆数据表示范围,对于要求精

[转] POJ几何分类

转自:http://blog.csdn.net/tyger/article/details/4480029 计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠.3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板.如果代码一片混乱,那么会严重影响做题正确率.4.注意精度控制.5.能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2).因为整数不用考虑浮点误差,而且运算比浮点快. 一.点