依旧是叉积的应用

判定重合:也就是判断给定的点是否共线的问题——叉积为0

 if(!cross(p1,p2,p3) && !cross(p1,p2,p4))printf("LINE\n");

因为给的是整数所以用非号来判断

平行也好说,就用高中知识就行了

 else if((x1 - x2) * (y3 - y4) == (y1 - y2) * (x3 - x4))printf("NONE\n");

接下来就是求交点了,设焦点为x,那么p1,p2,x共线,p3,p4,x共线对应的叉积为零,这样得出两个不等式二元一次不等式,即可求出x的具体坐标(x.x,x.y) 演草纸在哪~~

引用一下吧

如何求出交点?这里也用到叉积的原理。假设交点为p0(x0,y0)。则有:

(p1-p0)X(p2-p0)=0

(p3-p0)X(p2-p0)=0

展开后即是

(y1-y2)x0+(x2-x1)y0+x1y2-x2y1=0

(y3-y4)x0+(x4-x3)y0+x3y4-x4y3=0

将x0,y0作为变量求解二元一次方程组。

假设有二元一次方程组

a1x+b1y+c1=0;

a2x+b2y+c2=0

那么

x=(c1*b2-c2*b1)/(a2*b1-a1*b2);

y=(a2*c1-a1*c2)/(a1*b2-a2*b1);

因为此处两直线不会平行,所以分母不会为0。

《我当然也在演草纸上写了,还是很好明白的,大佬写的很详细》

double a1 = p1.y-p2.y;
double b1 = p2.x-p1.x;
double c1 = p1.x*p2.y-p2.x*p1.y;
double a2 = p3.y-p4.y;
double b2 = p4.x-p3.x;
double c2 =p3.x*p4.y-p4.x*p3.y;
double x = (c1*b2-c2*b1)/(a2*b1-a1*b2);
double y = (a2*c1-a1*c2)/(a1*b2-a2*b1);
printf("POINT %.2f %.2f\n", x, y);

POJ1269求两个直线的关系平行,重合,相交的更多相关文章

  1. C++ 根据两点式方法求直线并求两条直线的交点

    Line.h #pragma once //Microsoft Visual Studio 2015 Enterprise //根据两点式方法求直线,并求两条直线的交点 #include"B ...

  2. POJ1269:Intersecting Lines(判断两条直线的关系)

    题目:POJ1269 题意:给你两条直线的坐标,判断两条直线是否共线.平行.相交,若相交,求出交点. 思路:直线相交判断.如果相交求交点. 首先先判断是否共线,之后判断是否平行,如果都不是就直接求交点 ...

  3. Intersecting Lines--POJ1269(判断两条直线的关系 && 求两条直线的交点)

    http://poj.org/problem?id=1269 我今天才知道原来标准的浮点输出用%.2f   并不是%.2lf  所以wa了好几次 题目大意:   就给你两个线段 然后求这两个线段所在的 ...

  4. Intersecting Lines - POJ 1269(判断平面上两条直线的关系)

    分析:有三种关系,共线,平行,还有相交,共线和平行都可以使用叉积来进行判断(其实和斜率一样),相交需要解方程....在纸上比划比划就出来了....   代码如下: ================== ...

  5. 求两条直线相交点 AS3代码

    ,); ,); ,); ,); var p:Point = new Point(); trace(checkPoint()) function checkPoint() { if (p1Start.x ...

  6. AS3 求两条直线的交点

    //粘贴到帧上运行即可 var p1Start:Point = new Point(0,0); var p1End:Point = new Point(50,50); var p2Start:Poin ...

  7. Intersecting Lines---poj1269(求两直线的位置关系)

    题目链接:http://poj.org/problem?id=1269 题意:给你两条直线上的任意不同的两点,然后求两条直线的位置关系,如果相交于一点输出该点坐标; #include<iostr ...

  8. 旋转卡壳求两个凸包最近距离poj3608

    #include <iostream> #include <cmath> #include <vector> #include <string.h> # ...

  9. 两条直线(蓝桥杯)二分枚举+RMQ

    算法提高 两条直线   时间限制:1.0s   内存限制:256.0MB        问题描述 给定平面上n个点. 求两条直线,这两条直线互相垂直,而且它们与x轴的夹角为45度,并且n个点中离这两条 ...

随机推荐

  1. pod优先级与抢占测试

    # kubectl describe node k8s-n2Name:               k8s-n2Roles:              <none>Labels:      ...

  2. select 1 与 select null (转)

    1.Select 1 在这里我主要讨论的有以下几个select 语句: table表是一个数据表,假设表的行数为10行,以下同. 1:select  1 from table 2:select cou ...

  3. jquery 显示 隐藏

    参考 http://www.w3school.com.cn/jquery/jquery_hide_show.asp $("#a").hide(); $("#a" ...

  4. php去除bom

    <?php /*检测并清除BOM*/ if(isset($_GET['dir'])){ $basedir=$_GET['dir']; }else{ $basedir = '.'; } $auto ...

  5. 第五章 二叉树(c)二叉树

  6. 安装Ubuntu后一些准备

    一些基础 安装的时候,先不选镜像就可以避开简易安装. 更改root密码:sudo passwd root 更改源,更新,不行就打断在更新 安装vim 改为unity模式,安装VMware Tools, ...

  7. 128. Longest Consecutive Sequence最长连续序列

    [抄题]: Given an unsorted array of integers, find the length of the longest consecutive elements seque ...

  8. 安装运行Rovio

    https://github.com/ethz-asl/rovio下载代码,该存储库包含ROVIO(Robust Visual Inertial Odometry)框架. https://github ...

  9. Spring框架之Bean的作用范围和生命周期的注解

    1. Bean的作用范围注解 * 注解为@Scope(value="prototype"),作用在类上.值如下: * singleton -- 单例,默认值 * prototype ...

  10. Nginx+Keepalived实现站点高可用[z]

    http://segmentfault.com/a/1190000002881132