POJ1269+直线相交
求相交点
/*
线段相交模板:判相交、求交点
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h> const double eps = 1e-;
struct Point{
double x,y;
};
Point P_ans;
double cross( Point a,Point b,Point c ){
return ( b.x-a.x )*( c.y-a.y )-( b.y-a.y )*( c.x-a.x );
}
int solve( Point a,Point b,Point c,Point d ){
if( fabs(cross(a,b,c))<=eps&&fabs(cross(a,b,d))<=eps )
return -;//两条线段在同一条直线上
if( fabs((b.x-a.x)*(d.y-c.y)-(b.y-a.y)*(d.x-c.x))<=eps )
return ;//两条线断平行
/*
求交点用到叉积(必须保证有交点)
交点为p0(x,y)
(A-p0)*(B-p0)=0
(C-p0)*(D-p0)=0
*/
double a1,a2,b1,b2,c1,c2;
a1 = a.y-b.y,b1 = b.x-a.x,c1 = a.x*b.y-b.x*a.y;
a2 = c.y-d.y,b2 = d.x-c.x,c2 = c.x*d.y-d.x*c.y;
P_ans.x = (b1*c2-b2*c1)/(a1*b2-a2*b1);
P_ans.y = (a2*c1-a1*c2)/(a1*b2-a2*b1);
return ;
}
int main(){
int n;
Point p1,p2,p3,p4;
scanf("%d",&n);
printf("INTERSECTING LINES OUTPUT\n");
while( n-- ){
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p1.x,&p1.y,&p2.x,&p2.y,&p3.x,&p3.y,&p4.x,&p4.y);
int f = solve( p1,p2,p3,p4 );
if( f==- ) puts("LINE");
else if( f== ) puts("NONE");
else{
printf("POINT %.2lf %.2lf\n",P_ans.x,P_ans.y);
}
}
printf("END OF OUTPUT\n");
return ;
}
POJ1269+直线相交的更多相关文章
- poj2074Line of Sight(直线相交)
链接 几何细节题. 对于每一个障碍物可以求出它在地产线上的覆盖区间,如下图. 紫色部分即为每个障碍物所覆盖掉的区间,求出所有的,扫描一遍即可. 几个需要注意的地方:直线可能与地产线没有交点,可视区间可 ...
- 直线相交 POJ 1269
// 直线相交 POJ 1269 // #include <bits/stdc++.h> #include <iostream> #include <cstdio> ...
- 判断线段和直线相交 POJ 3304
// 判断线段和直线相交 POJ 3304 // 思路: // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. #include <cstdio ...
- poj 1556 zoj1721 BellmanFord 最短路+推断直线相交
http://poj.org/problem?id=1556 The Doors Time Limit: 1000MS Memory Limit: 10000K Total Submissions ...
- POJ 1269 Intersecing Lines (直线相交)
题目: Description We all know that a pair of distinct points on a plane defines a line and that a pair ...
- POJ3304 Segments 【线段直线相交】
题意: 给出n条线段两个端点的坐标,问所有线段投影到一条直线上,如果这些所有投影至少相交于一点就输出Yes!,否则输出No!. 思路: 计算几何.这道题要思考到两点: 1:把问题转化为是否存在一条直线 ...
- poj 1127(直线相交+并查集)
Jack Straws Description In the game of Jack Straws, a number of plastic or wooden "straws" ...
- POJ 1039 Pipe【经典线段与直线相交】
链接: http://poj.org/problem?id=1039 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22013#probl ...
- [poj] 1066 Treasure Hunt || 判断直线相交
原题 在金字塔内有一个宝藏p(x,y),现在要取出这个宝藏. 在金字塔内有许多墙,为了进入宝藏所在的房间必须把墙炸开,但是炸墙只能炸每个房间墙的中点. 求将宝藏运出城堡所需要的最小炸墙数. 判断点和直 ...
随机推荐
- 【Objective-C】0-第一个OC的类
OC是一门面向对象的语言,因此它也有类.对象.静态\动态方法.成员变量的概念.这讲就来创建第一个OC的类. 一.语法简介 1.类 在Java中,我们用1个.java文件就可以描述清楚一个类:在OC中, ...
- 优雅的使用 PhpStorm 来开发 Laravel 项目
[目录] Prerequisites plugin installation and configuration 1 Ensure Composer is initialized 2 Install ...
- 认识JSON
JSON 全称 JavaScript Object Notation,意思是JavaScript对象表示法.是一种基于文本的.独立于语言的轻量级数据交换格式.易于阅读和编写,易于机器解析和生成. 一. ...
- Ubuntu Update-rc.d命令详细介绍
http://www.jb51.net/os/Ubuntu/182768.html Ubuntu或者Debian系统中update-rc.d命令,是用来更新系统启动项的脚本.这些脚本的链接位于/etc ...
- 0708_Java如何设置输入流
1.Java如何设置输入流:?(以解决看下面实例代码) 2.Java如何设置全局变量:(以解决public static即可) 3.Java为什么在做那种机试题目的时候都要设置成静态的:(以解决,因为 ...
- mybatis关联查询
场景:一个人有多个手机号,一个手机号对应一个人 CREATE TABLE test.mobile ( mid INT NOT NULL auto_increment, tel ), pid INT, ...
- 新安装Eclipse后的一些配置
配置护眼的背景色 Window-> Preferences-> General-> Editors-> Text Editors: Appearance color optio ...
- 用函数的地址调用函数 C++ MFC
先说一段废话,幸亏我汇编基础(基础 基础 基础)扎实,否则这个问题真的恶心到我了正题 因为有特殊需求, 需要写一个类似于接口的功能,但是因为用到的次数不多再加上C++写接口各种麻烦所以想通过函数的地 ...
- MFC通过ADO操作Access数据库
我在<VC知识库在线杂志>第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读.写Excel表格文件”和“直接通过DAO读.写Access文件”,先后给大家介绍了ODBC和DAO两 ...
- S.O.L.I.D
S.O.L.I.D.是一组面对面向对象设计的最佳实践的设计原则.术语来自Robert C.Martin的著作Agile Principles, Patterns, and Practices in C ...