二维向量的叉积是标量还是向量?

今天学习了一下《计算几何》,里面讲了一下关于判断一个点是否在某个三角形内的问题(在二维平面上)。其中有一个算法是“同向法”,主要是用叉积来判断两个点是否在某条线段的同一侧,如图(1)所示。关于“同向法”再次不做具体介绍,感兴趣的同学可以百度之,或者关注本人后面更新的博文。关于《计算几何》系列的博文,我会继续学习,总结并发布到博客上。

图1

好了,言归正传,我们只知道在二维平面中,两个向量的叉乘其结果(叉积)是一个确切的值。例如向量A(x1,y1)和向量B(x2,y2)叉乘:A(x1,y1)xB(x2,y2) = |A||B|sina,其中a为向量A和向量B的夹角,|A|和|B|是向量A和向量B的模,sina是一个与角a有关的实数。可以看出向量A和向量B的最终结果是一个确切的实数。这和我们所知的两个向量的叉积是一个垂直于其平面的法向量有些背离了,因为我们得到确实是一个值,而不是一个向量。这是神马情况呢?

对于一个三角形ABC来说,CA和CB的夹角为a,那么三角形的面积S = 1/2(|CA||CB|sina),也就是S = 1/2(CAxCB),可以将该面积看作三角形的有向面积。由右手坐标系可知,正对着我们的方向为正面,那么背对着我们的一面就是负面,因为对于一个平面而言,肯定是有一个正面和负面了。如果定义该三角形的平面法向量的方向n,那么n就与向量CA,CB垂直,也就和三角形正面的法向量是一致的。所以说,二维向量的叉积不能简单地看作是一个标量,其实质上是一个向量。

下面将二维向量看作成z轴值恒为0的三维向量,例如向量OA(x1,y1,0),OB(x2,y2,0),其实质上还是平面xy上的向量,只不过引入z轴,使其具有三维空间的上的意义。可以根据三维向量的叉积公式(1-1)计算得出OAxOB的值。

(1-1)

其矩阵表示如下:

那么OAxOB = (0,0,x1y2-x2y1)(#1),很明显(0,0,x1y2-x2y1)也是一个向量,并且是垂直于向量OA和OB构成的平面的法向量,而其方向的正负就取决于它们的输入(x1,y1)和(x2,y2)的值。

时间: 2024-10-04 20:59:37

二维向量的叉积是标量还是向量?的相关文章

向量及其运算(一):二维向量的基本运算

前言 在数学中,几何向量指具有大小(magnitude)和方向的几何对象,它在线性代数中经由抽象化有着更一般的概念.向量在编程中也有着及其广泛的应用,其作用在图形编程和游戏物理引擎方面尤为突出. 本文以二维向量为例,基于面向对象编程语言,我们创建一个二维向量的类(Class),就能够在编程中轻松实现向量的表示及其运算 1.构造函数 1.这里,将类的名称命名为"Vector2D", 2.添加两个属性X和Y,分别表示二维向量的两个分量 3.实现构造函数,实例化时即初始化X,Y的值 Publ

C++链接库的使用,二维向量,三维向量,Ubuntu下C++测试向量库

1.#include<iostream> using namespace std; int main() { cout<<"Hello Woeld"<<endl; return 0; } 2.vector.cxx #include<iostream> int main() {int k; char x; cout<<"请输入向量的维度:"<<endl; cin>>k; vector

还是普通二维图形处理(向量,点阵图旋转)

c#下的简单2D图像处理这个本来也是没什么可说的 我本人也不做图像处理方面的正经工作.一天为了工作 浑浑噩噩 写数据平台下的业务代码 ,其实这些东西大都用不怎么上. 出了校门这么久了 高中的那些sin cos 向量 是干嘛的 怎么都用不上. 做图像处理发现 哇 都用上了 原来数学这么有趣 甚至还会用上一些大学的数学知识.在数学的世界里 会发现计算机程序语言仅仅是工具 而已.你在C++ java下 也是一样的 算法都是一样 . 首先说下我要讲的也没什么技术含量.其实这些东西在大多数图像库里都自带了

Matlab二维曲线绘图

matlab 二维曲线绘图常用方法,自己留着用 语法 plot(Y) plot(X1,Y1,...) plot(X1,Y1,LineSpec,...) plot(...,'PropertyName',PropertyValue,...) plot(axes_handle,...) h = plot(...) hlines = plot('v6',...) 描述 plot(Y)如果Y是m×n的数组,以1:m为X横坐标,Y中的每一列元素为Y坐标,绘制n条曲线:如果Y是n×1或者1×n的向量,则以1:

二维凸包

二维凸包模板 p[1010]//输入的点集,res[1010]//输出的点集 int n;//点的个数 int cmp(Point a,Point b)//先对x坐标排序,在比较y坐标 { if(a.x==b.x) return a.y<b.y; return a.x<b.x; } int ConvexHull()//返回凸包顶点数 { sort(p,p+n,cmp); int m=0; for(int i=0;i<=n-1;i++) { while(m>1&&Cr

二维图形变换

5.1二维图形变化 一.向量 是具有长度和方向的实体 二.特殊的线性组合 (1)仿射组合 (2)凸组合(对仿射组合加以更多的限制) 三.向量的点积和叉积 (1)点积 两个向量夹角的余弦值等于两个单位向量的点积 (2)叉积 两个向量的叉积是另一个三维向量,且与两个向量均正交 利用叉积求平面的法向量,三点可确定一个平面 5.2 图形坐标系 1.世界坐标系 是一个公共坐标系,是现实中物体或场景的统一参考系 2.建模坐标系 又称局部坐标系,每个物体有自己的局部中心和坐标系 3.观察坐标系 从观察者的角度

Luogu 2742 二维凸包

Luogu 2742 二维凸包 使用 \(Andrew\) 算法.将点排序后分别求上下凸壳,用单调栈维护. 利用向量叉积来判断当前方向.若 \(v_1\times v_2<0\) ,说明 \(v_2\) 在 \(v_1\) 的右侧, \(<0\) 为左侧, \(=0\) 说明二者共线. 参考讲解. #include<bits/stdc++.h> using namespace std; #define ll long long #define mp make_pair #defin

标量、向量、矩阵和张量

标量(scalar):一个标量就是一个单独的数.通常小写变量. 向量(vector):一个向量是一列数.这些数是有序排列的.通常粗体的小写变量名称. 矩阵(matrix):二维数组.通常大写粗体. 张量(tensor):一个数组中的元素分布在若干维坐标的规则网络中,称之为张量.我们使用 字体 A 来表示张量 “A’’.张量 A 中坐标为 (i, j, k) 的元素记作 Ai,j,k. 转置(transpose): 主对角线(main diagonal) C = A + b 向量b和矩阵A的每一行

【线性代数】中的各种量理解:标量、向量、矩阵、张量

标量.向量.矩阵.张量之间的联系 在深度学习中,大家肯定都知道这几个词:标量(Scalar),向量(Vector),矩阵(Matrix),张量(Tensor).但是要是让我们具体说下他们,可能一下子找不出头绪.下面介绍一下他们之间的关系: 标量(scalar)?一个标量表示一个单独的数,它不同于线性代数中研究的其他大部分对象(通常是多个数的数组).我们用斜体表示标量.标量通常被赋予小写的变量名称. 向量(vector)?一个向量表示一组有序排列的数.通过次序中的索引,我们可以确定每个单独的数.通