判断线段之间的关系(D - Intersecting Lines POJ - 1269 )
题目链接:https://vjudge.net/contest/276358#problem/D
题目大意:每一次给你两条直线,然后问你这两条直线的关系(平行,共线,相交(输出交点))。
具体思路:先判断共线,再去判断平行,其次是相交,这些都能通过叉积来判断。
首先输入的是四个点,P1,P2,P3,P4.
共线的话,我们线确定一条直线,P1,P2。然后我们看p1,p2,p3这三个点形成的两条线是不是为0,然后再去看p1,p2,p4形成的两条直线是不是也是0,如果都满足的话,就是共线。
平行的话,就看这两条直线的叉积是不是0就可以了。
共线的话,推公式就可以了。假设交点,然后就是两个两元表达式,就可以把交点求出来了。
AC代码:
#include<iostream>
#include<stack>
#include<stdio.h>
#include<iomanip>
#include<cmath>
using namespace std;
# define ll long long
const int maxn = +;
const double eps = 1e-;
int cal(int x1,int y1,int x2,int y2){
return x1*y2-x2*y1;
}
int main( ) {
int T;
int x1,y1,x2,y2;
int x3,y3,x4,y4;
double a1,a2,b1,b2,c1,c2;
scanf("%d",&T);
printf("INTERSECTING LINES OUTPUT\n");
while(T--){
scanf("%d %d %d %d %d %d %d %d",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
if(cal(x2-x1,y2-y1,x3-x1,y3-y1)==&&cal(x2-x1,y2-y1,x4-x1,y4-y1)==) {
printf("LINE\n");
}
else if(cal(x2-x1,y2-y1,x4-x3,y4-y3)==){
printf("NONE\n");
}
else {
a1=y1-y2;
a2=y3-y4;
b1=x2-x1;
b2=x4-x3;
c1=x1*y2-x2*y1;
c2=x3*y4-x4*y3;
printf("POINT %.2lf %.2lf\n",(c1*b2-c2*b1)/(a2*b1-a1*b2),(c1*a2-c2*a1)/(b2*a1-b1*a2));
}
}
printf("END OF OUTPUT\n");
return ;
}
判断线段之间的关系(D - Intersecting Lines POJ - 1269 )的更多相关文章
- Intersecting Lines - POJ 1269(判断平面上两条直线的关系)
分析:有三种关系,共线,平行,还有相交,共线和平行都可以使用叉积来进行判断(其实和斜率一样),相交需要解方程....在纸上比划比划就出来了.... 代码如下: ================== ...
- Intersecting Lines POJ 1269
题目大意:给出两条直线,每个直线上的两点,求这两条直线的位置关系:共线,平行,或相交,相交输出交点. 题目思路:主要在于求交点 F0(X)=a0x+b0y+c0==0; F1(X)=a1x+b1y+c ...
- Segments--poj3304(判断直线与线段之间的关系)
http://poj.org/problem?id=3304 给你几条线段 然后 让你找到一条直线让他在这条直线上的映射有一个重合点 如果有这条直线的话 这个重合的部分的两个端点一定是某两条线段的 ...
- poj 3304 Segments(计算直线与线段之间的关系)
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10921 Accepted: 3422 Descrip ...
- Intersecting Lines (计算几何基础+判断两直线的位置关系)
题目链接:http://poj.org/problem?id=1269 题面: Description We all know that a pair of distinct points on a ...
- 判断两条直线的位置关系 POJ 1269 Intersecting Lines
两条直线可能有三种关系:1.共线 2.平行(不包括共线) 3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...
- POJ 1269 Intersecting Lines (判断直线位置关系)
题目链接:POJ 1269 Problem Description We all know that a pair of distinct points on a plane defines a li ...
- POJ 1269 Intersecting Lines(判断两直线位置关系)
题目传送门:POJ 1269 Intersecting Lines Description We all know that a pair of distinct points on a plane ...
- POJ1269:Intersecting Lines(判断两条直线的关系)
题目:POJ1269 题意:给你两条直线的坐标,判断两条直线是否共线.平行.相交,若相交,求出交点. 思路:直线相交判断.如果相交求交点. 首先先判断是否共线,之后判断是否平行,如果都不是就直接求交点 ...
随机推荐
- 《Linux内核分析》第二周笔记 操作系统是如何工作的
操作系统是如何工作的 一.函数调用堆栈 1.三个法宝 计算机是如何工作的?(总结)——三个法宝(存储程序计算机.函数调用堆栈.中断机制) 1)存储程序计算机工作模型,计算机系统最最基础性的逻辑结构: ...
- Answer My Questions
回答自己的问题,真棒!断电让自己的工作重来.真棒! 阅读以前自己的博客,发现问题都已经有了答案. (1).想要成为一名专业的软件工程师,首先得是有相关的资格证书,这个可以通过软考获得.然后在职场中锻炼 ...
- VSCode和VUE的初始安装及简单使用入门
(版本1.0) npm run dev 运行工程 PS F:\SDN\VIMS--前端\vue> cnpm install PS F:\SDN\VIMS--前端\vue> cnpm reb ...
- ipmitool+python应用处理大量带外地址
ipmitool 是一种可用在 linux 系统下的命令行方式的 ipmi 平台管理工具,它支持 ipmi 1.5 规范(最新的规范为 ipmi 2.0),通过它可以实现获取传感器的信息.显示系统日志 ...
- Jmeter使用笔记之函数
用Jmeter才做了一个项目的测试,就不得不对函数这部分吐槽一下,真是有点弱,难怪大多数人不用这个功能,不过如果用的好也是很方便的,以下慢慢说. 一.BeanShell函数 在测试中遇到了时间戳的加减 ...
- 爆打团队 四则运算 beta视频
爆打团队 四则运算 beta视频链接 http://v.youku.com/v_show/id_XMTU1MjAzNDI0NA==.html?from=s1.8-1-1.2
- 在静态方法和非静态方法上加 Synchronized的区别
Synchronzied 修饰非静态方法==>对象锁 Synchronzied 修饰静态方法==>其实是类锁,因为是静态方法,它把整个类锁起来了: 1.Synchronized修饰非静态方 ...
- 继承Tcalendar控件,让当天日期醒目显示
一.新建一控件 打开Delphi主菜单Cpmponent—New Cpmponent: 二.配置参数 点击OK键,打开Unit单元文件. 三.修改单元文件 unit LyCalendar; inter ...
- python的logging日志模块
1. 简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info mess ...
- Django 高并发负载均衡
1 什么是负载均衡? 当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能.那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台 ...