题目链接

题意

判断两条直线的位置关系,重合/平行/相交(求交点)。

直线以其上两点的形式给出(点坐标为整点)。

思路

写出直线的一般式方程(用\(gcd\)化为最简),

计算\(\begin{vmatrix}a1&b1\\a2&b2\end{vmatrix}\),

  1. 若不为\(0\),则两直线有交点,$$x=\frac{\begin{vmatrix}-c1&b1\-c2&b2\end{vmatrix}}{\begin{vmatrix}a1&b1\a2&b2\end{vmatrix}},y=\frac{\begin{vmatrix}a1&-c1\a2&-c2\end{vmatrix}}{\begin{vmatrix}a1&b1\a2&b2\end{vmatrix}}$$

  2. 若为\(0\),若\(c1==c2\),则共线,否则平行。

Code

#include <cstdio>
#include <cmath>
using namespace std;
typedef long long LL;
struct Line {
int a, b, c;
Line(int _a=0, int _b=0, int _c=0) : a(_a), b(_b), c(_c) {}
};
int gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}
int abs(int x) { return x > 0 ? x : -x; }
Line make_line(int x1, int y1, int x2, int y2) {
if (x1 == x2) return Line(1, 0, -x1);
if (y1 == y2) return Line(0, 1, -y1);
int div = gcd(abs(x2-x1), abs(y2-y1));
int b = (x2-x1) / div, a = (y1-y2) / div;
if (a < 0) a = -a, b = -b;
int c = -a * x1 - b * y1;
return Line(a, b, c);
}
void work() {
int x1, y1, x2, y2, x3, y3, x4, y4;
scanf("%d%d%d%d%d%d%d%d", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4);
Line l1 = make_line(x1, y1, x2, y2), l2 = make_line(x3, y3, x4, y4);
int det = l1.a * l2.b - l2.a * l1.b;
if (det) {
int dx = l2.c * l1.b - l1.c * l2.b,
dy = l2.a * l1.c - l1.a * l2.c;
printf("POINT %.2f %.2f\n", 1.0*dx/det, 1.0*dy/det);
}
else {
if (l1.c == l2.c) printf("LINE\n");
else printf("NONE\n");
}
}
int main() {
printf("INTERSECTING LINES OUTPUT\n");
int n;
scanf("%d", &n);
while (n--) work();
printf("END OF OUTPUT\n");
return 0;
}

poj 1269 判断直线的位置关系的更多相关文章

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

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

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

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

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

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

  4. TOYS(计算几何基础+点与直线的位置关系)

    题目链接:http://poj.org/problem?id=2318 题面: TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submiss ...

  5. POJ 2318 /// 判断点与直线的位置关系

    题目大意: n块玩具箱隔板 m个玩具落地点 给定玩具箱的左上和右下两个端点 接下来给定n块隔板的上点的x和下点的x(因为y就是玩具箱的上下边缘) 接下来给定m个玩具落地点 输出n+1个区域各有的玩具数 ...

  6. Intersecting Lines (计算几何基础+判断两直线的位置关系)

    题目链接:http://poj.org/problem?id=1269 题面: Description We all know that a pair of distinct points on a ...

  7. POJ 2398 map /// 判断点与直线的位置关系

    题目大意: poj2318改个输出 输出 a: b 即有a个玩具的格子有b个 可以先看下poj2318的报告 用map就很方便 #include <cstdio> #include < ...

  8. POJ 2074 /// 判断直线与线段相交 视野盲区

    题目大意: 将所有物体抽象成一段横向的线段 给定房子的位置和人行道的位置 接下来给定n个障碍物的位置 位置信息为(x1,x2,y) 即x1-x2的线段 y相同因为是横向的 求最长的能看到整个房子的一段 ...

  9. Segments - POJ 3304 (判断直线与线段是否相交)

    题目大意:给出一些线段,然后判断这些线段的投影是否有可能存在一个公共点.   分析:如果这些线段的投影存在一个公共点,那么过这个公共点作垂线一定与所有的直线都想交,于是题目转化成是否存在一个直线可以经 ...

随机推荐

  1. React入门教程(二)

    前言 距离上次我写 React 入门教程已经快2个月了,年头年尾总是比较忙哈,在React 入门教程(一)我大概介绍了 React 的使用和一些注意事项,这次让我们来继续学习 React 一. Rea ...

  2. 浅谈一类「AC自动机计数」问题

    最近写了几道AC自动机的题.这几题主要考察的是对AC自动机的浅层理解套上计数. 几道计数题 [AC自动机]bzoj3172: [Tjoi2013]单词 把被动贡献看成主动贡献. [状态压缩dp]119 ...

  3. java工作环境配置jdk,idea

    下载 jdk 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 配置环境 ...

  4. 批量ping IP并检测IP延迟率和丢包率脚本

    脚本文件如下: #!/bin/bash #Author:Mr.Ding #Created Time:2018-08-26 07:23:44 #Name:ping.sh #Description: sh ...

  5. Python 建模步骤

    #%% #载入数据 .查看相关信息 import pandas as pd import numpy as np from sklearn.preprocessing import LabelEnco ...

  6. Java-basic-3-运算符-修饰符-循环

    运算符: 与C++类似,特殊的有: 1)按位右移补零操作符: 2)instanceof运算符:判断一个实例是否是某类/接口类型 如果是/类型兼容,则返回true // superclass class ...

  7. IAR单片机启动文件与程序入口

    最近在做TI单片机TM4C123GE6PZ的BootLoader,需要对启动文件做出修改,折腾了半宿,弄得事实而非. IAR默认提供了单片机的启动文件,cstart.s或者其他cstartxxx.s, ...

  8. 在spring boot中使用webSocket组件(一)

    最近在项目中使用到了spring的webSocket组件,在这里和大家分享下,如有错误,欢迎大家指正. 在这里我使用的IDE工具是Intellij idea,框架是spring boot.spring ...

  9. 到底有没有必要兼容IE版本

    我就说两个字:"没有". 理由如下: 1.占资源空间,额外去写css hack去做页面兼容处理.(主要是增加css代码) PS:css hack 不是W3C的规范,css hack ...

  10. 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it

    链接:https://www.nowcoder.com/acm/contest/163/F 来源:牛客网 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 F Color it 时间限制:C ...