[poj] 1269 [zoj] 1280 Interesting Lines || 求两直线交点
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 || 求两直线交点的更多相关文章
- ZOJ 1280 Interesting Lines | 求两直线交点
原题: 求两直线交点 思路借鉴于:http://blog.csdn.net/zxy_snow/article/details/6341282 感谢大佬 #include<cstdio> # ...
- hdu 2857:Mirror and Light(计算几何,点关于直线的对称点,求两线段交点坐标)
Mirror and Light Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Intersecting Lines---poj1269(求两直线的位置关系)
题目链接:http://poj.org/problem?id=1269 题意:给你两条直线上的任意不同的两点,然后求两条直线的位置关系,如果相交于一点输出该点坐标; #include<iostr ...
- 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 ...
- Gym-101915B Ali and Wi-Fi 计算几何 求两圆交点
题面 题意:给你n个圆,每个圆有一个权值,你可以选择一个点,可以获得覆盖这个点的圆中,权值最大的m个的权值,问最多权值是多少 题解:好像是叙利亚的题....我们画画图就知道,我们要找的就是圆与圆交的那 ...
- 判断两条直线的位置关系 POJ 1269 Intersecting Lines
两条直线可能有三种关系:1.共线 2.平行(不包括共线) 3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...
- POJ 1269 (直线求交)
Problem Intersecting Lines (POJ 1269) 题目大意 给定两条直线,问两条直线是否重合,是否平行,或求出交点. 解题分析 主要用叉积做,可以避免斜率被0除的情况. 求交 ...
- 简单几何(直线位置) POJ 1269 Intersecting Lines
题目传送门 题意:判断两条直线的位置关系,共线或平行或相交 分析:先判断平行还是共线,最后就是相交.平行用叉积判断向量,共线的话也用叉积判断点,相交求交点 /********************* ...
- POJ 1269 /// 判断两条直线的位置关系
题目大意: t个测试用例 每次给出一对直线的两点 判断直线的相对关系 平行输出NODE 重合输出LINE 相交输出POINT和交点坐标 1.直线平行 两向量叉积为0 2.求两直线ab与cd交点 设直线 ...
随机推荐
- CBCGPImage的GetSize的问题及解决方法
BCGControlBar Pro for MFC 25.10是目前(2018-07-16)网上能够找到的最新能够使用的版本,我配合Visual Studio 2010使用.在单文档MFC程序的视图中 ...
- JDK1.8简单配置环境变量---两步曲
鄙人最近重新装完系统之后,在安装和配置jdk1.8的时候,发现网上许多教程配置jdk环境变量时都还在沿用传统的方式配置,但是随着技术的更新,完全没有必要那么麻烦了. 下载和安装jdk的教程,在这里就不 ...
- Linux Kernel ---- PCI Driver 分析
自己笔记使用. Kernel 版本 4.15.0 (ubuntu 18.04,intel skylake) 最近想学习VGA驱动去了解 DDCCP / EDID 等协议,然后顺便了解下驱动是如何工作的 ...
- thinkphp5 获取器的
获取器的作用是在获取数据的字段值后自动进行处理,例如,我们需要对状态值进行转换,可以使用: 1.数据库字段转换. class User extends Model { public function ...
- PHP实现qq三方登录
除了qq第三方登录外.还有微博,微信等第三方登录 qq第三方登录,遵循oauth2.0协议 这里是说明http://www.cnblogs.com/yx520zhao/p/6616686.html q ...
- nginx+php整合(是让nginx可以运行php,以及下载地址)
下载地址: nginx:http://nginx.org/en/download.html PHP: https://windows.php.net/download/ 都是官网的自己选择版本 安装文 ...
- 1864: [Zjoi2006]三色二叉树
1864: [Zjoi2006]三色二叉树 链接 分析: 做得最智障的一题了... 首先中间输出两个数之间没空格(换行居然也过了...), 写了dp[i][0/1/2],后来知道其实dp[i][0/1 ...
- 为 DirectAccess 设计 DNS 基础结构
TechNet 库Windows ServerWindows Server 2008 R2 und Windows Server 2008浏览 Windows Server 技术NetworkingD ...
- Github前端项目排名
Github前端项目排名(2016-04-04) 一.前言 近几年前端技术日新月异,从 RequireJS 到 AngularJS 再到 React,似乎每天都有新的技术诞生.而大神们总能第一时间 ...
- istringstream输入数据到数组
istringstream iss(line); ; while (!(iss >> dat[n]).fail()) n++;