Intersecting Lines - POJ 1269(判断平面上两条直线的关系)
#include<math.h>
#include<algorithm>
#include<stdio.h>
using namespace std; const int MAXN = ;
const double EPS = 1e-; struct point
{///定义点
double x, y; point(double x=, double y=):x(x),y(y){}
point operator - (const point &t) const{
return point(x-t.x, y-t.y);
}
double operator * (const point &t) const{
return x * t.y - y * t.x;
}
};
struct segment
{
point A, B;
double a, b, c; void InIt(point t1, point t2)
{
A = t1, B = t2;
a = B.y - A.y;
b = A.x - B.x;
c = A.x*B.y-B.x*A.y;
}
}; bool Parallel(segment t1, segment t2)
{///是否平行
return fabs((t1.A-t1.B)*(t2.A-t2.B)) < EPS;
}
bool Collineation(segment t1, segment t2)
{///是否共线 return fabs((t1.A-t1.B)*(t2.A-t1.B)) < EPS && fabs((t1.A-t1.B)*(t2.B-t1.B)) < EPS;
}
point CrossPoint(segment t1, segment t2)
{
point t; t.x = (t1.c*t2.b-t2.c*t1.b) / (t1.a*t2.b-t2.a*t1.b);
t.y = (t1.c*t2.a-t2.c*t1.a) / (t1.b*t2.a-t2.b*t1.a); return t;
} int main()
{
int N; while(scanf("%d", &N) != EOF)
{
segment p1, p2;
point A, B; printf("INTERSECTING LINES OUTPUT\n");
while(N--)
{
scanf("%lf%lf%lf%lf", &A.x, &A.y, &B.x, &B.y);p1.InIt(A, B);
scanf("%lf%lf%lf%lf", &A.x, &A.y, &B.x, &B.y);p2.InIt(A, B); if(Collineation(p1, p2) == true)
printf("LINE\n");
else if(Parallel(p1, p2) == true)
printf("NONE\n");
else
{
point ans = CrossPoint(p1, p2);
printf("POINT %.2f %.2f\n", ans.x, ans.y);
}
}
printf("END OF OUTPUT\n");
} return ;
}
Intersecting Lines - POJ 1269(判断平面上两条直线的关系)的更多相关文章
- 判断线段之间的关系(D - Intersecting Lines POJ - 1269 )
题目链接:https://vjudge.net/contest/276358#problem/D 题目大意:每一次给你两条直线,然后问你这两条直线的关系(平行,共线,相交(输出交点)). 具体思路:先 ...
- POJ1269:Intersecting Lines(判断两条直线的关系)
题目:POJ1269 题意:给你两条直线的坐标,判断两条直线是否共线.平行.相交,若相交,求出交点. 思路:直线相交判断.如果相交求交点. 首先先判断是否共线,之后判断是否平行,如果都不是就直接求交点 ...
- Intersecting Lines POJ 1269
题目大意:给出两条直线,每个直线上的两点,求这两条直线的位置关系:共线,平行,或相交,相交输出交点. 题目思路:主要在于求交点 F0(X)=a0x+b0y+c0==0; F1(X)=a1x+b1y+c ...
- Intersecting Lines--POJ1269(判断两条直线的关系 && 求两条直线的交点)
http://poj.org/problem?id=1269 我今天才知道原来标准的浮点输出用%.2f 并不是%.2lf 所以wa了好几次 题目大意: 就给你两个线段 然后求这两个线段所在的 ...
- poj 3304 判断是否存在一条直线与所有线段相交
Segments Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8579 Accepted: 2608 Descript ...
- 判断两条直线的位置关系 POJ 1269 Intersecting Lines
两条直线可能有三种关系:1.共线 2.平行(不包括共线) 3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...
- poj 1269 判断直线的位置关系
题目链接 题意 判断两条直线的位置关系,重合/平行/相交(求交点). 直线以其上两点的形式给出(点坐标为整点). 思路 写出直线的一般式方程(用\(gcd\)化为最简), 计算\(\begin{vma ...
- poj 1269(两条直线交点)
Intersecting Lines Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13481 Accepted: 59 ...
- CodeForces - 961D:Pair Of Lines (几何,问两条直线是否可以覆盖所有点)
You are given n points on Cartesian plane. Every point is a lattice point (i. e. both of its coordin ...
随机推荐
- swift 赋值判断
. var name:String? = "Wing" var geting = "Hello!" if let thisname = name{ geting ...
- javascript 浏览器执行断点
在javascript代码里面有个语句可以让浏览器执行到这里的时候触发断点,这个命令就是 debugger 很好用
- cocos2dx arpg单机手游
这只是一个DEMO. ARPG 单机手游, 个人DEMO. 支持剧情编辑, 支持气泡对话, 支持人物图像对话, 支持随时角色切换, 支持NPC跟随, 共同作战, 支持LUA扩展, 支持BUFF技能, ...
- Win32中GDI+应用(四)--- 位图的打开与显示
显示位图,你应该使用GDI+里面的Bitmap类或者Image类,这两个类都提供了方法从硬盘上的一个文件打开文件,创建相应的内存中的位图对象的工作.然后你可以使用Graphics类的DrawImage ...
- c、c++混编实现查询本地IP地址
一.思路 1.要想得到本地IP地址,可以通过本机名来查询,所以首先得得到本机名. 2.牵涉到IP地址,首先想到牵涉到网络协议,因此得加载套接字协议,所以先使用WSAStartup函数完成对Winsoc ...
- mysql5.5提示Deprecated: mysql_query(): The mysql extension is deprecated
解决方法1:在php程序代码里面设置报警级别 <?php error_reporting = E_ALL & ~E_DEPRECATED 方法2:禁止php报错 display_erro ...
- easyui-combobox小Demo
<script type="text/javascript"> $("#Function_TypeSelect").combobox({ onSel ...
- Android Material Design NavigationView 及 Palette 颜色提取器
DrawerLayout + NavigationView DrawerLayout布局,通常在里面添加两个子控件,程序主界面添加到NavitagionView前面. <android.supp ...
- go和swift
你生命中的有些东西终究会失去,比如我住了6年的陈寨,这个聚集了郑州十几万IT民工的地方,说拆就拆了.再比如我玩了3年的坦克英雄,这个带给我太多快乐的游戏,说停就停了. 编程对我而言是种爱好,我上学6年 ...
- Ext.Array 方法
1. Ext.Array.clean(arr); 过滤数组中的空元素 var arr = [1,"",2,"",3]; Ext.clean(arr); // [ ...