POJ原题

ZOJ原题

多组数据。每次给出四个点,前两个点确定一条直线,后两个点确定一条直线,若平行则输出"NONE",重合输出"LINE",相交输出“POINT”+交点坐标(保留两位小数)


先判重合:两条线重合意味着四点共线,即ABC共线且ABD共线(共线即为叉积=0)

再判平行:正常的数学方法,\(\overrightarrow{AB}\) // \(\overrightarrow{CD}\)

求交点:



//这个公式很好用,背下来好伐

#include<cstdio>
#include<algorithm>
#define eps 1e-8
using namespace std;
int n;
struct hhh
{
double x,y;
hhh() {}
hhh(double _x,double _y) { x=_x; y=_y; }
hhh operator - (const hhh &b) const
{
return hhh(x-b.x,y-b.y);
}
double operator * (const hhh &b) const
{
return x*b.y-b.x*y;
}
}p[2],q[2]; double abs(double x) { return x>0?x:-x; } bool check(hhh a,hhh b,hhh c)
{
if (abs((a-b)*(c-b))<eps) return 1;
return 0;
} int main()
{
puts("INTERSECTING LINES OUTPUT");
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
for (int j=1;j<=4;j++)
scanf("%lf%lf",&q[j].x,&q[j].y);
if (check(q[1],q[2],q[3]) && check(q[1],q[2],q[4]))
{
puts("LINE");
continue;
}
if (abs((q[1].x-q[2].x)*(q[3].y-q[4].y)-(q[1].y-q[2].y)*(q[3].x-q[4].x))<eps)
{
puts("NONE");
continue;
}
double s1=(q[3]-q[1])*(q[4]-q[1]),s2=(q[4]-q[2])*(q[3]-q[2]);
printf("POINT ");
hhh tmp=(q[2]-q[1]);
printf("%.2f %.2f\n",(q[1].x*(s1+s2)+tmp.x*s1)/(s1+s2),(q[1].y*(s1+s2)+tmp.y*s1)/(s1+s2));
}
puts("END OF OUTPUT");
return 0;
}

[poj] 1269 [zoj] 1280 Interesting Lines || 求两直线交点的更多相关文章

  1. ZOJ 1280 Interesting Lines | 求两直线交点

    原题: 求两直线交点 思路借鉴于:http://blog.csdn.net/zxy_snow/article/details/6341282 感谢大佬 #include<cstdio> # ...

  2. hdu 2857:Mirror and Light(计算几何,点关于直线的对称点,求两线段交点坐标)

    Mirror and Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

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

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

  4. UVALive 4639 && SPOJ SPOINTS && POJ 3805 && AOJ 1298 Separate Points 求两个凸包是否相交 难度:3

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  5. Gym-101915B Ali and Wi-Fi 计算几何 求两圆交点

    题面 题意:给你n个圆,每个圆有一个权值,你可以选择一个点,可以获得覆盖这个点的圆中,权值最大的m个的权值,问最多权值是多少 题解:好像是叙利亚的题....我们画画图就知道,我们要找的就是圆与圆交的那 ...

  6. 判断两条直线的位置关系 POJ 1269 Intersecting Lines

    两条直线可能有三种关系:1.共线     2.平行(不包括共线)    3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...

  7. POJ 1269 (直线求交)

    Problem Intersecting Lines (POJ 1269) 题目大意 给定两条直线,问两条直线是否重合,是否平行,或求出交点. 解题分析 主要用叉积做,可以避免斜率被0除的情况. 求交 ...

  8. 简单几何(直线位置) POJ 1269 Intersecting Lines

    题目传送门 题意:判断两条直线的位置关系,共线或平行或相交 分析:先判断平行还是共线,最后就是相交.平行用叉积判断向量,共线的话也用叉积判断点,相交求交点 /********************* ...

  9. POJ 1269 /// 判断两条直线的位置关系

    题目大意: t个测试用例 每次给出一对直线的两点 判断直线的相对关系 平行输出NODE 重合输出LINE 相交输出POINT和交点坐标 1.直线平行 两向量叉积为0 2.求两直线ab与cd交点 设直线 ...

随机推荐

  1. ES6笔记01-声明变量

    ES6只有六种声明变量的方法:var命令和function命令,let和const命令,import命令和class命令.所以,ES6一共有6种声明变量的方法. const声明一个只读的常量.一旦声明 ...

  2. 使用PHP生成分享图片

    小程序导航 wq.xmaht.top 假设代码中用到的资源文件夹在当前code_png目录下: /** * 分享图片生成 * @param $gData 商品数据,array * @param $co ...

  3. 微信小程序真机定位问题技巧

    小程序导航 https://wq.xmaht.top 开发者在开发小程序的时候可能会碰到一些这样的问题: 问题1  开发者工具上看效果没问题,但是在真机上测试不行? 问题2  有用户遇到小程序功能无法 ...

  4. 45.VUE学习之--组件之父组件使用scope定义子组件模板样式结构实例讲解

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. OC中block作方法参数时的用法

    方式一.在传参时直接声明block回调方法. 1. 定义方法: - (int)doTest:(NSString *)name para1:(int)temp1 para2:(int)temp2 suc ...

  6. 硬件中断--DEBUG系列

    问题描述: 在线调试时,全速运行,程序进入硬件中断,查看堆栈窗口,发现是从A函数进去的.但是A函数应该没有问题的: 再次重复,发现是从B函数进去的,但是B函数之前运行起来也没有问题的,而且没有传入参数 ...

  7. 《Cracking the Coding Interview》——第18章:难题——题目7

    2014-04-29 03:05 题目:给定一个词典,其中某些词可能能够通过词典里其他的词拼接而成.找出这样的组合词里最长的一个. 解法:Leetcode上有Word Break这道题,和这题基本思路 ...

  8. 《Cracking the Coding Interview》——第17章:普通题——题目8

    2014-04-28 23:35 题目:最大子数组和问题. 解法:O(n)解法. 代码: // 17.8 Find the consecutive subarray with maximum sum ...

  9. android的5个进程等级

    一.Foreground Process(前台进程,优先级别最高) 1.正处于 Activity Resume() 状态 2.正处于与 bound 服务交互的状态 3.正处于服务在前台运行的状态(st ...

  10. Percona-Tookit工具包之pt-duplicate-key-checker

      Preface       I suppose that we have a requirement of checking out how many duplicated indexes on ...