Leyni, LOLI and Line

Time Limit: 1000 MS    Memory Limit: 65536 K

Total Submit: 181(54 users)   Total Accepted: 88(52 users)       Rating:         Special Judge: No

Description

Professor Leyni likes to help LOLIs with their math.

This time, Leyni meets several LOLIs in the classroom and gets several problems about "Intersecting Lines".

The LOLIs want to know how and where two lines intersect.Leyni asks you to help him to answer.

Input

There are multiple test cases. The first line of input is an integer T indicating the number of test cases. Then T test cases follow.

For each test case:

Line 1. This line contains eight integers. These integers represent the coordinates of four points on the plane in the order x1y1x2y2x3y3x4y4. Thus each of these input lines represents two lines on the plane: the line through (x1,y1) and (x2,y2) and the line through (x3,y3) and (x4,y4). The point (x1,y1) is always distinct from (x2,y2). Likewise with (x3,y3) and (x4,y4).

All numbers required by this problem will be in the range [-1000, 1000].

Output

For each test case:

Line 1.If there is no intersection, output "NONE". If they are the same line, output "LINE". Otherwise output the x and y coordinates of the point, correct to two decimal places as the sample output.

Sample Input

5

0 0 4 4 0 4 4 0

5 0 7 6 1 0 2 3

5 0 7 6 3 -6 4 -3

2 0 2 27 1 5 18 5

0 3 4 0 1 2 2 5

Sample Output

POINT 2.00 2.00

NONE

LINE

POINT 2.00 5.00

POINT 1.07 2.20

Hint

A pair of distinct points on a plane defines a line and that a pair of lines on a plane will intersect in one of three ways:

1) no intersection because they are parallel,

2) intersect in a line because they are on top of one another (i.e. they are the same line),

3) intersect in a point.

Author

哈理工2011春季校赛


  解析几何,斜截式的应用

  利用斜截式判断两条直线位置关系(共线LINE、不相交NONE、相交POINT),相交的话需要输出交点坐标。

  思路是先分别求出两条直线斜截式的斜率k和截距b,之后就是通过比较确定两条直线的位置关系:

  if 两条直线斜率相等

    if 两条直线截距也相等

      共线 LINE

    else 截距不相等

      平行,无交点 NONE

  else if 两条直线都垂直

    if 两条直线横坐标相等

      共线 LINE

    else 横坐标不相等

      平行,无交点 NONE

  else if 第一条直线垂直

    相交 POINT(交点用解析几何方法就能求出)

  else if 第二条直线垂直

    相交 POINT(同上)

  else 排除了斜率相等和垂直的情况,剩下的一定相交

    相交 POINT(联立两直线方程)

  用斜截式解决几何问题需要注意垂直的时候是没有斜率k的,所以需要将垂直的情况拿出来单独考虑。

  代码

 #include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n--){
double x1,y1,x2,y2,x3,y3,x4,y4;
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
double k1=(y2-y1)/(x2-x1),k2=(y4-y3)/(x4-x3);
double b1=y1-k1*x1,b2=y3-k2*x3;
if(k1==k2){ //两条直线斜率相等
if(b1==b2){ //两条直线截距也相等
printf("LINE\n");
}
else{ //两条直线截距不相等,说明平行,没有交点
printf("NONE\n");
}
}
//有直线垂直的情况
else if(x1==x2 && x3==x4){ //两条直线都垂直
if(x1==x3)
printf("LINE\n");
else
printf("NONE\n");
}
else if(x1==x2){ //第一条直线垂直
printf("POINT %.2lf %.2lf\n",x1,k2*x1+b2);
}
else if(x3==x4){ //第二条直线垂直
printf("POINT %.2lf %.2lf\n",x3,k1*x3+b1);
}
else{ //一定相交
double x = (b2-b1)/(k1-k2);
printf("POINT %.2lf %.2lf\n",x,k1*x+b1);
}
}
return ;
}

Freecode : www.cnblogs.com/yym2013

hrbustoj 1104:Leyni, LOLI and Line(解析几何,斜截式的应用)的更多相关文章

  1. hrbustoj 1161:Leyni(树状数组练习)

    LeyniTime Limit: 3000 MS Memory Limit: 65536 KTotal Submit: 260(59 users) Total Accepted: 80(55 user ...

  2. 【BZOJ 1007】【HNOI 2008】水平可见直线 解析几何

    之前机房没网就做的这道题,用的解析几何判断交点横坐标 #include<cmath> #include<cstdio> #include<cstring> #inc ...

  3. UVa 11524:In-Circle(解析几何)

    Problem EIn-CircleInput: Standard Input Output: Standard Output In-circle of a triangle is the circl ...

  4. fragment显示 Binary XML file line #12: Error inflating class fragment 错误

    问题 最近换了新机子,今天在静态用fragment时突然发现闪退,一看显示 Binary XML file line #12: Error inflating class fragment 错误 后面 ...

  5. BZOJ 1502: [NOI2005]月下柠檬树 [辛普森积分 解析几何 圆]

    1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1070  Solved: 596[Submit][Status] ...

  6. 对称点line

    2 线 题⽬描述 有一天rax看到了男神,有时可爱美丽的她派ypq去把yyqx抓回来给rax欣赏,但ypq和yyqx间隔了一条线,她必须跳到yyqx以前待得点的对称点才有可能抓到yyqx给出⼀条直线, ...

  7. 【BZOJ】1610: [Usaco2008 Feb]Line连线游戏(几何)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1610 两种做法,一种计算几何,一种解析几何,但是计算几何的复杂度远远搞出解析集合(虽然精度最高) 计 ...

  8. PAT 甲级 1104 sum of Number Segments

    1104. Sum of Number Segments (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Pen ...

  9. PAT甲级——1104 Sum of Number Segments (数学规律、自动转型)

    本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90486252 1104 Sum of Number Segmen ...

随机推荐

  1. 在linux下新增一块硬盘的操作。(包含大于2T的硬盘在linux下挂载操作)

    转自:http://blog.csdn.net/season_hangzhou/article/details/36423223 一.安装硬盘到物理机上. 二.查看硬盘是否正确安装. 使用“fdisk ...

  2. Ant—怎样Windows操作系统中搭建Apache Ant环境

    介绍一下怎样在Windows操作系统中搭建Apache Ant环境: 一.下载Apache Ant压缩文件:http://download.csdn.net/detail/wangshuxuncom/ ...

  3. 使用overflow:hidden处理元素溢出和坍塌

    溢出 css溢出示意如图,子元素(背景为粉色)的长度或宽度超出父元素(背景为绿色). 通过为父元素赋 overflow:hidden 样式可将子元素超出父元素的部分隐藏起来. 也可为父元素赋 over ...

  4. [转]C#实现录音录像录屏源码

    原文地址:http://www.cnblogs.com/zhuweisky/p/3593917.html 以前写过两篇录音和录像的文章(实现语音视频录制.在服务器端录制语音视频),最近有朋友问,如果要 ...

  5. python None 和 NaN

    python原生的None和pandas, numpy中的numpy.NaN尽管在功能上都是用来标示空缺数据.但它们的行为在很多场景下确有一些相当大的差异.由于不熟悉这些差异,曾经给我的工作带来过不少 ...

  6. XMLDocument转为String 摘录

    public static string FormatXmlString(string xmlString) { XmlDocument document = new XmlDocument(); d ...

  7. c++创建一个char数组

    char c[] = { 'a', 'b', 'c', '\0' }; char* cp = c; printf(cp); 所有的char类型都以'\0'结尾

  8. [svc]salt安装lamp

    在批量安装软件前,先找台测试机yum装一遍,看是否报错等,是否依赖包全等 . 本次我们在dev环境下搞. 先看一下已搞成功的目录结构 定义dev环境的第二个好处 搞清楚逻辑结构和调用关系很重要,不然之 ...

  9. Android从无知到有知——NO.5

    今天整一下利用广播实现ip拨号. 这一块主要用到的知识是android四大组件之中的一个的broadcast   receiver(广播接收者).那么它接收什么东东呢,就是我们所无谓的一个个的事件,比 ...

  10. WIN XP 命令汇总

    winver检查Windows版本dxdiag检查DirectX信息mem.exe显示内存使用情况Sndvol32音量控制程序sfc.exe系统文件检查器gpedit.msc 组策略regedit.e ...