向量是一个有方向的量,它由起点和终点组成。向量的坐标是指向量终点相对于起点在坐标系中的位置。因为坐标系的原点通常被定义为起点,而向量的终点是相对于起点移动的位置,所以向量的坐标通常被表示为终点减去起点。
这种表示方式能够清晰地描述向量的方向和大小,也方便计算向量在不同坐标系下的坐标值。
同时,这种方式也符合几何直观,将向量看作从起点指向终点的有向线段,而坐标则描述了终点在坐标系中的位置。
向量图形运算涉及向量的加法、减法、数乘以及点积和叉积。
加法是将两个向量的对应分量相加;减法同理。数乘是向量与标量相乘,结果方向不变,模长变化。
点积是两个向量的对应分量相乘后求和,结果是一个标量,表示两向量的夹角余弦值。
叉积是两个三维向量的运算,结果是一个向量,垂直于原两向量所在的平面。
我们知道余弦定理 cos(α) = A·B/(A·B),反过来也可以求得A,B向量得夹角
α = arccos(A·B/(A·B))。
但是,由于余弦函数是一个0~Π之间的偶函数,当夹角大于Π时,计算得到的角度仍然为正值,不是正确的夹角,此时可以用以下方法:
向量Vector是一个Point1指向Point2向量,先计算出该向量的X分量与Y分量
double radian = 0;
double deltaX = Point2.X - Point1.X;//X分量
double deltaY = Point2.Y - Point1.Y;//Y分量
double length= Math.Sqrt(deltaX * deltaX + deltaY * deltaY);//该向量的长度
然后利用反三角函数计算夹角,此时需要注意角度的旋转方向
if(deltaY >0)
radian = Math.Acos((deltaX) / length);//计算与单位向量(1,0)的夹角
else
radian = -Math.Acos((deltaX) / length);//当角度超过180时则需要取反