【POJ 1269】判断两直线相交
利用叉积解方程
#include <cstdio>
#define MAX 1<<31
#define dd double
int xmult(dd x1,dd y1,dd x2,dd y2,dd x,dd y){
return (x1-x)*(y2-y)-(x2-x)*(y1-y);
}
int main(){
int n;
dd x1,y1,x2,y2,x3,y3,x4,y4;
scanf("%d",&n);
puts("INTERSECTING LINES OUTPUT");
while(n--){
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
dd a1=y1-y2;
dd b1=x2-x1;
dd c1=xmult(x1,y1,x2,y2,,);
dd a2=y3-y4;
dd b2=x4-x3;
dd c2=xmult(x3,y3,x4,y4,,);
if(a1*b2==a2*b1){
if(xmult(x1,y1,x2,y2,x3,y3)==)
puts("LINE");
else puts("NONE");
}
else {
dd cx,cy;
cx=(b1*c2-c1*b2)/(a1*b2-a2*b1);
cy=(a1*c2-c1*a2)/(b1*a2-b2*a1);
printf("POINT %.2f %.2f\n",cx,cy);
}
}
puts("END OF OUTPUT");
}
利用点斜式解方程
#include <cstdio>
#define MAX 1<<31
#define dd double
struct P{
dd x,y;
void input(){
scanf("%lf%lf",&x,&y);
}
void output(){
printf("POINT %.2f %.2f\n",x,y);
}
};
struct L{
P s,e;
void input(){
s.input(),e.input();
}
dd k(){
if(s.x==e.x)return MAX;
return (s.y-e.y)/(s.x-e.x);
}
}l1,l2;
int xmult(P a,P b,P o){
return (a.x-o.x)*(b.y-o.y)-(b.x-o.x)*(a.y-o.y);
}
void getCross(L a,L b){
P c;
dd ka=a.k(),kb=b.k();
if(ka==MAX){//a是竖直的
c.x=a.s.x;
c.y=(c.x-b.s.x)*kb+b.s.y;
}
else{
if(kb==MAX)
c.x=b.s.x;
else
c.x=(a.s.y-b.s.y-ka*a.s.x+kb*b.s.x)/(kb-ka);
c.y=(c.x-a.s.x)*ka+a.s.y;
}
c.output();
}
int main(){
int n;
scanf("%d",&n);
puts("INTERSECTING LINES OUTPUT");
while(n--){
l1.input(),l2.input();
dd ka=l1.k(),kb=l2.k();
if(ka==kb){
if(xmult(l1.s,l1.e,l2.s)==)
puts("LINE");
else puts("NONE");
}
else
getCross(l1,l2);
}
puts("END OF OUTPUT");
}
【POJ 1269】判断两直线相交的更多相关文章
- POJ 1269 /// 判断两条直线的位置关系
题目大意: t个测试用例 每次给出一对直线的两点 判断直线的相对关系 平行输出NODE 重合输出LINE 相交输出POINT和交点坐标 1.直线平行 两向量叉积为0 2.求两直线ab与cd交点 设直线 ...
- poj 1269 Intersecting Lines(直线相交)
Intersecting Lines Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8637 Accepted: 391 ...
- Pick-up sticks(判断两直线相交)
Pick-up sticks Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 11335 Accepted: 4250 D ...
- POJ 1269 Intersecting Lines(判断两直线位置关系)
题目传送门:POJ 1269 Intersecting Lines Description We all know that a pair of distinct points on a plane ...
- Jack Straws(poj 1127) 两直线是否相交模板
http://poj.org/problem?id=1127 Description In the game of Jack Straws, a number of plastic or wood ...
- poj 1127:Jack Straws(判断两线段相交 + 并查集)
Jack Straws Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2911 Accepted: 1322 Descr ...
- Intersecting Lines (计算几何基础+判断两直线的位置关系)
题目链接:http://poj.org/problem?id=1269 题面: Description We all know that a pair of distinct points on a ...
- poj 1269 线段与线段相交
Intersecting Lines Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13605 Accepted: 60 ...
- hdu 1147:Pick-up sticks(基本题,判断两线段相交)
Pick-up sticks Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
随机推荐
- [No00004C]软件工程师的创业陷阱:接私活
我本身是 Java 工程师出身,写代码至今已超过 15 年,创业也超过 10 年,曾经外包过很多项目给别人,也接过很多外包的项目,现在不接了,只经营电子报发送平台,在二年内累积超过 5000 家企业用 ...
- Y2161 Hibernate第三次考试 2016年8月18日 试卷分析
- 转: rapidJSON与jsoncpp语法说明
转: http://www.voidcn.com/blog/hudejun007/article/p-1811986.html
- luogu10125回文数[noip1999 Day1 T1]
题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...
- vijos 1512
SuperBrother打鼹鼠 背景 SuperBrother在机房里闲着没事干(再对比一下他的NOIP,真是讽刺啊......),于是便无聊地开始玩“打鼹鼠”...... 描述 在这个“打鼹鼠”的游 ...
- .Net Core 控制台输出中文乱码
Net Core 控制台输出中文乱码的解决方法: public static void Main(string[] args) { Console.Output ...
- 错题724-java
1.代码片段: byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6; b6=b4+b5; b3=(b1+b2); System.out.println(b3+b6); ...
- 教你写一个web远程控制小工具
惯例先上图 晚上躺床上了,发现忘关电脑了,又不想起来关,来用手机控制电脑多好,百度了下,果然一大把.哈,我自己为什么不自己也实现个呢,任意的自己diy.Just do it. 如果不想看如何实现,那么 ...
- 从setTimeout谈JavaScript运行机制
从setTimeout说起 众所周知,JavaScript是单线程的编程,什么是单线程,就是说同一时间JavaScript只能执行一段代码,如果这段代码要执行很长时间,那么之后的代码只能尽情地等待它执 ...
- PowerShell Script to Deploy Multiple VM on Azure in Parallel #azure #powershell
Since I need to deploy, start, stop and remove many virtual machines created from a common image I c ...