|
1、向量方向的确定和通过向量求点
向量如何确定方向?向量就是一个坐标量的数值,向量本身与坐标系无关。一个坐标点通过与向量值进行计算,例如
//代码1
AcGePoint3d pnt1(20,20,0)
AcGeVector3d v(20,20,0);
AcGePoint3d pnt2(pnt1+v); //得到点(40,40,0)
则可以得到另一个坐标点,两个点确定一条直线,根据直线自然可以确定出方向。
向量通过xyz的值就确定了方向,如果将代码1的pnt1换一下
//代码2
AcGePoint3d pnt1(40,30,0)
AcGeVector3d v(20,20,0);
AcGePoint3d pnt2(pnt1+v); //得到点(60,50,0)
如果把向量v看成是一个从原点到点(20,20,0)的有向直线,则任何点如果按照原点到点(20,20,0)的向量进行移动,其移动后的点与移动前的点构成的直线的均与原点与点(20,20,0)构成的直线平行。如代码2显示的那样,点(40,30,0)与点(60,50,0)的直线平行于原点与点(20,20,0)构成的直线。这样,对于任意的2个点,只要它们按照同一个向量移动,这2个点与它们各自移动后的点所构成的直线相互平行,也就是说方向一致,所以向量实际上是确定了一个方向的。
如果2个点相减,也可以构成一个向量,代码1和2是由一个点通过向量求另一个点,而代码3是通过2个点计算向量
//代码3
AcGePoint3d pnt1(10,10,0),pnt2(20,20,0);
AcGeVector3d v((pnt2-pnt1)/2); //pnt2和pnt1向量的一半,pnt1为起点,pnt2为终点
//pnt1为起点,顺向量方向移动向量的一半即得到pnt1和pnt2间的线段的中点(15,15,0)
AcGePoint3d mid_Pnt(pnt1+v);
AcGePoint3d mid_Pnt(pnt2-v); //pnt2为起点,逆向量方向移动向量的一半也可以得到同样结果
2、normalize的作用
将向量正规化为单位向量
单位向量(unit vector): 范数为1的向量,若 v 为一非零向量,则
为一方向与 v 相同之单位向量,这种对一已知向量建构与其同向之单位元向量的程序称为向量正规化(normalization of a vector)
举例来说,如果一个向量A取了normalize之后(设为A'),点B+A'=点C,则点C和点B的距离为1
3、向量与距离的区别
两点间的向量不是两点间的距离,简单理解就是:A点坐标 + AB间的向量 = B点坐标,但是 A点坐标 + A~B点距离 ! = B点坐标,但可以有
AB间的向量=A~B点距离 * AB间的向量的单位向量
4、向量与坐标系
向量与坐标系无关,可以把它理解为一个“公式”,在任何坐标系下,如果一个点套用这个“公式”(例如A点+向量=B点)都会得到一个相对于这个坐标系下的一条直线(直线AB)。相对于各坐标系来说,这条直线的指向是固定的。如下图,AB是通过同一个向量计算的结果。为了方便理解,按地理方向标识。在A坐标系中,北是在上方,在坐标系B中则在下方,但是按向量计算的结果,方向没有改变
|
|