求平面向量坐标的坐标

向量的坐标表示_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
向量的坐标表示
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
你可能喜欢3D空间基础概念之一:点、向量(矢量)和齐次坐标
3D空间基础概念之一:点、向量(矢量)和齐次坐标
1. 点和向量的区别
点是三维空间中的某个坐标,是绝对的,它的值是参照原点的,而向量用于表示力和速度等具有方向和大小的量, 通常用具有长度和方向的线段来表示,虽然他们都具有三个分量,但对于向量,如果将向量放在坐标系中的任何位置(平移),都不会改变其性质,因为向量表示的是方向和大小,与位置距离无关,它的值是相对与基准点的。下图是三维顶点和向量的数学符号或称为列矩阵。
在二维平面中只要将c和z设置为0即可
2. 向量的获取
使用两个点的坐标就可以计算向量,假设有两点P1和P2,以P1作为基准点,向量V=P2-P1,假如以P2作为基准点,则向量V=P1-P2,总之V=P-Pb,Pb为基准点。
V=P-Pb=(x-xb,y-yb,z-zb)=(a,b,c)
举例:假设P1=(1,2,3),P2=(2,2,2),将P2看作基准点,那么根据公式:
V=P1-P2=(1-2,2-2,3-2)=(-1,0,1)
可以看出,虽然P1和P2的三个分量都处于正轴,但是由于基准点取的是P2,所以V的向量在x方向上为指向x轴的负轴,而V的b值是0,因此向量处于一个XZ平面上,如图:
将V放入坐标中
从图中也可以看出,无论向量处于何处,其方向和大小是不会改变的。
3. 向量的绝对值
向量的绝对值就是向量的长度,也称模,计算公式为:
将上例中V的分量代入|V|=sqrt (-1^2+0^2+1^2)=sqrt(2)=1.414…
4. 单位向量
单位向量就是模(向量长度)为1的向量,也就是某向量每单位长度的向量。单位向量u的计算公式为:
设|V|=L公式分解如下:
=( a , b , c )/L
=( a/L , b/L , c/L )
=( au, bu , cu )
因此,上面例子中的的单位向量为:
U=(-1,0,1)/1.414=( -1/1.414 , 0 , 1/1.414 )
=( -0.414 , 0 , 0.414)
5. 齐次坐标
在进行坐标和向量计算中,为了不至于混淆点和向量,另外,在进行几何变换时,为了加快运算速度,简化计算,往往使用矩阵,而在使用矩阵运算时,矩阵的乘积只能表示旋转、比例和剪切等等变换,而不能表示平移变换。因此为统一计算(使用齐次坐标在数学中的意义还要广),引入了第四个分量w,这使得原本二维坐标变成三维坐标,同理三维坐标变为四维坐标,而w称为比例因子,当w不为0时(一般设1),表示一个坐标,一个三维坐标的三个分量x,y,z用齐次坐标表示为变为x,y,z,w的四维空间,变换成三维坐标是方式是x/w,y/w,z/w,当w为0时,在数学上代表无穷远点,即并非一个具体的坐标位置,而是一个具有大小和方向的向量。从而,通过w我们就可以用同一系统表示两种不同的量。
在OPENGL中,作为坐标点时,w参数为1,否则为0,如此一来,所有的几何变换和向量运算都可以用相同的矩阵乘积进行运算和变换,当一个向量和一个矩阵相乘时所得的结果也是向量。
发表评论:
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&如何求向量在一组基下的坐标?要中文回答
美萬櫲廹硂
待定系数法设e1,e2为基向量,向量m=pe1+qe2两边展开建立关于p,q的方程组,解方程组求出p与q.例如:e1=(1,2),e2=(-2,1),m=(3,3)设(3,3)=p(1,2)+q(-2,1)=(p-2q,2p+q)所以p-2q=3且2p+q=3,解出p,q即可.
为您推荐:
其他类似问题
扫描下载二维码知道点坐标,怎么求向量坐标如A(1,2),B(4,-1)求向量AB坐标
祥爷V587Cr
由A(1,2)&B(4,1)AB=AA1+AA2=(4-1,1-2)=(3,-1)即将A正交分解,用B的坐标分别减A的坐标.
为您推荐:
其他类似问题
AB=B-A=(4,-1)-(1,2)=(3,-3)其实就是用终点减起点.
扫描下载二维码如果已知旋转前后的一向量的变化,那么该如何求这个旋转矩阵呢?本篇结合Rodrigues' rotation formula,介绍一下该旋转矩阵的求法。
1.旋转角度
已知旋转前向量为P, 旋转后变为Q。由点积定义可知:
可推出P,Q之间的夹角为:
由1中可知,旋转角所在的平面为有P和Q所构成的平面,那么旋转轴必垂直该平面。
假定旋转前向量为a(a1, a2, a3), 旋转后向量为b(b1, b2, b3)。由叉乘定义得:
所以旋转轴c(c1, c2, c3)为:
3.& 罗德里格旋转公式(Rodrigues' rotation formula)
已知单位向量 , 将它旋转&角。由罗德里格旋转公式,可知对应的旋转矩阵 :
其中I是3x3的单位矩阵,
是叉乘中的反对称矩阵r:
3.2 公式证明
假设在坐标系(x, y, z)中,向量v=ax+by+cz,v绕z轴逆时针旋转&角后得到新的向量v&。
根据2维(x,y)面上的旋转公式可得:
将上式带入v&的公式:
& 将cz替换掉,可得:
将上式中的叉乘表示为反对称矩阵得:
最终可以推出:
上式即为罗德里格旋转公式。
4. 求旋转矩阵
根据旋转前后的两个向量值,使用上面的方法,先求出旋转角度和旋转轴,然后用罗德里格旋转公式即可求出对应的旋转矩阵。
C#的实现代码如下:
void Calculation(double[] vectorBefore, double[] vectorAfter)
double[] rotationA
double rotationA
double[,] rotationM
rotationAxis = CrossProduct(vectorBefore, vectorAfter);
rotationAngle = Math.Acos(DotProduct(vectorBefore, vectorAfter) / Normalize(vectorBefore) / Normalize(vectorAfter));
rotationMatrix = RotationMatrix(rotationAngle, rotationAxis);
double[] CrossProduct(double[] a, double[] b)
double[] c = new double[3];
c[0] = a[1] * b[2] - a[2] * b[1];
c[1] = a[2] * b[0] - a[0] * b[2];
c[2] = a[0] * b[1] - a[1] * b[0];
double DotProduct(double[] a, double[] b)
result = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
double Normalize(double[] v)
result = Math.Sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
double[,] RotationMatrix(double angle, double[] u)
double norm = Normalize(u);
double[,] rotatinMatrix = new double[3,3];
u[0] = u[0] /
u[1] = u[1] /
u[2] = u[2] /
rotatinMatrix[0, 0] = Math.Cos(angle) + u[0] * u[0] * (1 - Math.Cos(angle));
rotatinMatrix[0, 0] = u[0] * u[1] * (1 - Math.Cos(angle) - u[2] * Math.Sin(angle));
rotatinMatrix[0, 0] = u[1] * Math.Sin(angle) + u[0] * u[2] * (1 - Math.Cos(angle));
rotatinMatrix[0, 0] = u[2] * Math.Sin(angle) + u[0] * u[1] * (1 - Math.Cos(angle));
rotatinMatrix[0, 0] = Math.Cos(angle) + u[1] * u[1] * (1 - Math.Cos(angle));
rotatinMatrix[0, 0] = -u[0] * Math.Sin(angle) + u[1] * u[2] * (1 - Math.Cos(angle));
rotatinMatrix[0, 0] = -u[1] * Math.Sin(angle) + u[0] * u[2] * (1 - Math.Cos(angle));
rotatinMatrix[0, 0] = u[0] * Math.Sin(angle) + u[1] * u[2] * (1 - Math.Cos(angle));
rotatinMatrix[0, 0] = Math.Cos(angle) + u[2] * u[2] * (1 - Math.Cos(angle));
return rotatinM
阅读(...) 评论()

我要回帖

更多关于 平面向量坐标 的文章

 

随机推荐