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. jquery操作元素的位置

    .offset() 在匹配的元素中,获取第一个元素的当前坐标,或设置每一个元素的坐标,坐标相对于文档. .offset() 这个不接受任何参数. var offset = p.offset(); // ...

  2. python读写dbf数据库

    dbf数据库作为一种简单的数据库,曾经广泛使用.现在在金融领域还是有很多的应用之处,工作中遇到此类的问题,在此记录一下. 1. 读取dbf ''' 读取DBF文件 ''' def readDbfFil ...

  3. ElasticSearch 集群原理

    节点 一个运行中的EasticSearch 被称为一个节点,而集群是由多个用于拥有相同cluster.name配置的节点组成,它们共同承担数据和负载的压力,当有新的节点加入或移除,集群会重新平均分布所 ...

  4. python 获取项目的根路径

    root_path = os.path.abspath(os.path.dirname(__file__)).split('shippingSchedule')[0] shippingSchedule ...

  5. openldap完整版本搭建记录

    文档信息 目        的:搭建一套完整的OpenLDAP系统,实现账号的统一管理.                     1:OpenLDAP服务端的搭建                   ...

  6. 课时27.base(掌握)

    base标签就是专门用来统一的指定当前网页中所有的超链接(a标签)需要如何打开 格式 <base target="_blank"> <a href="h ...

  7. PHP常用的自定义函数

    PHP常用的自定义函数 目录 php常用自定义函数类下载 php 设置字符编码为utf-8 路径格式化(替换双斜线为单斜线) 转码 打印输出 api返回信息 字符串截取 方法一: 方法二: 数组 字符 ...

  8. Python全栈day 03

    Python全栈day 03 一.运算符补充 in ,逻辑运算符,判断某字符或某字符串是否在一个大的字符串中,输出得到bool型数据. value = '我是中国人' v = '我' if v in ...

  9. POJ:2236-Wireless Network

    Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 34265 Accepted: 14222 D ...

  10. ABAP自定义截取字符串长度函数

    SAP 中strlen()只能计算字符串的个数,不能计算含有中文字符串的长度,如字符串“SAP大波霸”,strlen('SAP大波霸') = 6,其实真实长度为3+3*2 = 9.我们可以通过cl_a ...