POJ 1269 判断直线和直线关系
来源:互联网 发布:淘宝退货时间规定 编辑:程序博客网 时间:2024/05/10 19:24
题意:给两个直线,判断是相交还是重合还是平行,相交给出交点
注意:用一般式判断的时候需要三个比值相等而不是两个
fabs(la.a*lb.b - la.b*lb.a) < 1e-5&&fabs(la.a*lb.c - la.c*lb.a) < 1e-5&&fabs(la.b*lb.c - lb.b*la.c) < 1e-5
代码:
#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<cmath>using namespace std;const double INF = 1e200;const double EP = 1e-10;const int maxn = 5100;const double PI = acos(-1);struct POINT{ double x; double y; POINT(double a = 0,double b = 0){x = a;y = b;}};///点 定义struct SEGMENT{///line segment POINT s; POINT e; SEGMENT(POINT a,POINT b){s = a;e = b;} SEGMENT(){}};///线段 定义struct LINE{///ax + by + c = 0&&a >= 0 double a; double b; double c; LINE(double da,double db,double dc){a = da;b = db;c = dc;}};int multiply(POINT sp,POINT ep,POINT op){ return ((sp.x - op.x)*(ep.y - op.y) - (ep.x - op.x)*(sp.y - op.y));}///向量op->sp X op->ep的叉乘,小于0:ep在op->sp顺时针方向//大于0:0:ep在op->sp逆时针方向//等于0:三点共线bool lineintersect(LINE l1,LINE l2,POINT &p){///求两直线交点,有交点返回true和交点,没有返回false(重合也是返回false) double d = l1.a*l2.b-l2.a*l1.b; if(fabs(d) < EP)return false; p.x = (l2.c*l1.b-l1.c*l2.b)/d; p.y = (l2.a*l1.c-l1.a*l2.c)/d; return true;}int main(){ int T; cin>>T; printf("INTERSECTING LINES OUTPUT\n"); while(T --){ POINT a,b,c,d; cin>>a.x>>a.y>>b.x>>b.y>>c.x>>c.y>>d.x>>d.y; LINE la(b.y-a.y,a.x-b.x,b.x*a.y-a.x*b.y); LINE lb(d.y-c.y,c.x-d.x,d.x*c.y-c.x*d.y); POINT ans; bool flag = lineintersect(la,lb,ans); if(flag == 0){ if(fabs(la.a*lb.b - la.b*lb.a) < 1e-5&&fabs(la.a*lb.c - la.c*lb.a) < 1e-5&&fabs(la.b*lb.c - lb.b*la.c) < 1e-5)printf("LINE\n"); else printf("NONE\n"); } else{ printf("POINT %.2f %.2f\n",ans.x,ans.y); } } printf("END OF OUTPUT\n"); return 0;}
0 0
- POJ 1269 判断直线和直线关系
- POJ 1269 直线位置关系的判断
- POJ 1269 判断直线与直线相交
- POJ 1269 Intersecting Lines(判断直线的位置关系)
- POJ 1269 Intersecting Lines(判断两条直线关系)
- POJ 1269 Intersecting Lines(判断两直线关系)
- poj 1269 判断两直线的关系并求交点
- POJ 1269 Intersecting Lines(简单判断直线关系)
- poj 1269 Intersecting Lines 【判断两条直线的关系】
- poj 1269 Intersecting Lines 判断直线的位置关系
- POJ 1269 判断直线的关系:相交,平行,重合
- poj 1269 Intersecting Lines (叉积 判断两直线位置关系)
- poj 2318 叉积解点和直线的关系
- POJ 3304 判断线段和直线相交
- poj 1269 Intersecting Lines 直线位置关系
- poj 1269 Intersecting Lines[直线的关系]
- POJ 1269 Intersecting Lines 判断直线相交
- poj 1269 判断两直线位置
- 计数排序
- ?????????https://leetcode.com/problems/largest-rectangle-in-histogram/
- 如何撰写项目的解决方案?
- Java学习笔记(四):窗体和画图
- acdream 1722(最长回文子串)
- POJ 1269 判断直线和直线关系
- GridView的使用
- Java面试--Spring技术要点--Spring MVC
- 如何做项目或产品演示?
- Linux学习笔记1
- FASM源代码分析02
- C++链表各功能实现
- 桶排序
- 深入面向对象-2