判断两直线是否相交的叉积方法

struct point
{
    double x,y;
};

struct line
{
    point a,b;
}lines[110];

double chaji(point a,point b,point c,point d)
{
    return (b.x-a.x)*(d.y-c.y)-(b.y-a.y)*(d.x-c.x);
}

bool isin(line l1,line l2)
{
    if(chaji(l1.a,l2.a,l1.a,l1.b)*chaji(l1.a,l1.b,l1.a,l2.b)>=0&&chaji(l2.a,l1.b,l2.a,l2.b)*chaji(l2.a,l2.b,l2.a,l1.a)>=0)
        return true;
    return false;
}
时间: 2024-10-09 09:49:04

判断两直线是否相交的叉积方法的相关文章

判断两直线是否相交 hdu1086

1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 struct line 7 { 8 double x1; 9 double y1; 10 double x2; 11 double y2; 12 }l[110]; 13 14 bool test(int i,int j) 15 { 16 int s=0; 17 double acd = (l[j].x1-l[i].x1)*(l[j].y1-l

向量叉积判断两线段是否相交

判断两直线p1p2与q1q2是否相交,用向量叉积来判断 如果P x Q >0,则P在Q的顺时针方向: 如果P x Q <0,则P在Q的逆时针方向: 如果P x Q=0,则P与Q共线,可能同向也可能反向 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <iostream> typedef struct node {

如何判断单链表是否存在环 &amp; 判断两链表是否相交

给定一个单链表,只给出头指针h: 1.如何判断是否存在环? 2.如何知道环的长度? 3.如何找出环的连接点在哪里? 4.带环链表的长度是多少? 解法: 1.对于问题1,使用追赶的方法,设定两个指针slow.fast,从头指针开始,每次分别前进1步.2步.如存在环,则两者相遇:如不存在环,fast遇到NULL退出. 2.对于问题2,记录下问题1的碰撞点p,slow.fast从该点开始,再次碰撞所走过的操作数就是环的长度s. 3.问题3:有定理:碰撞点p到连接点的距离=头指针到连接点的距离,因此,分

判断两线段是否相交

今日集训第一日,遇到了判断线段相交问题.跟面积问题一样,这个同样可以用叉积来解决. 数学原理证明: 首先引出计算几何学中一个最基本的问题:如何判断向量在的顺时针方向还是逆时针方向? 把p0定为原点,p1的坐标是(x1,y1),p2的坐标是(x2,y2).向量的叉积(cross product)实际上就是矩阵的行列式: 代码实现: 1 int direction(Point p0, Point p1, Point p2) { 2 int px02 = p2.x - p0.x; 3 int py02

&lt;笔试&gt;&lt;面试&gt;C/C++单链表相关(4)判断两链表是否相交,求交点(链表不带环/可能带环)

判断两链表是否相交,求交点(假设链表不带环) 判断两链表是否相交,求交点(假设链表可能带环) RingEntry_Point()等函数见前篇. SListNode* Intersect(SListNode *&L, SListNode *&M)//判断两链表是否相交,求交点(假设链表不带环) {  //思路:若不带环,只有相交/不想交两种情况  // 与RingEntry_Point()函数方法相同:  //     求两个链表长度之差K,再令一个指针从长链表开始先走K步,令另一个指针从短

C# 判断两张图片是否一致的快速方法

#region 判断图片是否一致 /// <summary> /// 判断图片是否一致 /// </summary> /// <param name="img">图片一</param> /// <param name="bmp">图片二</param> /// <returns>是否一致</returns> public bool IsSameImg(Bitmap img

判断两矩形是否相交

转自Avril,略有改动 Problem: 给定两个边与坐标轴平行的矩形,分别由左上角与右下角两点指定,判断两矩形是否相交. Solution: 如下图所示,首先求出$P_1$与$P_3$点(即坐标值较小的两点)在$X$方向较大值与$Y$方向较大值构成的点,在下图中就是$P_3$,用红点(记为M点)表示. 然后求出$P_2$与$P_4$点(即坐标值较小的两点)在X方向较小值与Y方向较小值构成的点,在下图中就是$P_2$,用橙色点(记为N点)表示. 如果M点的X坐标和Y坐标值均比N点相应的X坐标和

判断两个矩形相交

假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形    rect1{(minx1, miny1)(maxx1, maxy1)}    rect2{(minx2, miny2)(maxx2, maxy2)}  相交的结果一定是个矩形,构成这个相交矩形rect{(minx, miny) (maxx, maxy)}的点对坐标是:      minx   =   max(minx1,   minx2)      miny   =   max(miny1,   mi

判断两线段是否相交 模板

1 struct point 2 { 3 double x, y; 4 point( double _x = 0, double _y = 0 ) 5 { 6 x = _x; 7 y = _y; 8 } 9 point operator-( point t ) 10 { 11 return point( x - t.x, y - t.y ); 12 } 13 double operator*( point t ) 14 { 15 return x * t.y - y * t.x; 16 } 17