学长说,高中时我们学习点乘,叉乘什么什么的东西,我想说,我怎么经历了高考之后就全部忘记了呢,o(︶︿︶)o 唉,这篇博客,我就要好好的总结一下。。。。。。
struct point
{
int x,y;
};
struct line
{
point s;
point e;
};
叉积(外积):两个二维向量v1(x1, y1)和v2(x2, y2)的叉积v1×v2=x1y2-y1x2。如果由v1到v2是顺时针转动,叉积为负,反之为正,为0表示二者方向相同(平行),注意,这里是向量,并不是点!!!!
问题解决:
给定两条线断的端点的坐标,求其位置关系,并求出交点。
分析:
两条线段的位置关系大体上可以分为三类:有重合部分、无重合部分但有交点(相交)、无交点。为避免精度问题,首先要将所有存在重合的情况排除。
重合可分为:完全重合、一端重合、部分重合三种情况。显然,两条线段的起止点都相同即为完全重合;只有起点相同或只有终点相同的为一端重合(注意:坐标较小的一条线段的终点与坐标较大的一条线段的起点相同时应判定为相交)。要判断是否部分重合,必须先判断是否平行。设线段L1(p1->p2)和L2(p3->p4),其中p1(x1, y1)为第一条线段的起点,p2(x2, y2)为第一条线段的终点,p3(x3, y3)为第二条线段的起点,p4(x4