cf#21-B-Intersection-计算几何-求直线交点个数
来源:互联网 发布:阿里云服务器图形界面 编辑:程序博客网 时间:2024/04/30 06:47
http://codeforces.com/problemset/problem/21/B
计算几何-给出2条线段求交点个数,AX+BY+C=0,求交点用公式,
需要先判断是否重合,重合输出-1,有一个坑点是,ABC,可能全为0。AB=0时,若C=0,表示所有点集。若C!=0,表示空集,答案一定为0。
#include <cstdio>#include <cstring>#include <algorithm>#include <map>#include <cmath>#include <iostream>using namespace std;const double pi=acos(-1.0);const double eps=1e-6;struct POINT{double x;double y;POINT(double a=0, double b=0) { x=a; y=b;}};struct LINESEG{POINT s;POINT e;LINESEG(POINT a, POINT b) { s=a; e=b;}LINESEG() { }};struct LINE{double a;double b;double c;LINE(double d1=1, double d2=-1, double d3=0) {a=d1; b=d2; c=d3;}};bool lineintersect(LINE l1,LINE l2,POINT &p) // 是 L1,L2{double d=l1.a*l2.b-l2.a*l1.b;if(abs(d)<eps) // 不相交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 equals(double a,double b){ return fabs(a-b)<eps;}int main(){ POINT pp;double a,b,c;double A,B,C;scanf("%lf%lf%lf",&a,&b,&c);LINE l1(a,b,c);scanf("%lf%lf%lf",&A,&B,&C);LINE l2(A,B,C); //重合 xie:-a/bif (a==0&&b==0&&c!=0){printf("0\n"); return 0;}if (A==0&&B==0&&C!=0){ printf("0\n"); return 0;}if (a==0&&b==0&&c==0){printf("-1\n"); return 0;}if (A==0&&B==0&&C==0){ printf("-1\n"); return 0;} if (B==0&&b==0){ if (equals(c/a,C/A)) {printf("-1\n");return 0;}}elseif (A==0&&a==0){ if (equals(c/b,C/B)){printf("-1\n");return 0;}}elseif (equals(a/a,A/A)&&equals(b/a,B/A)&&equals(c/a,C/A)) {printf("-1\n");return 0;} bool ret =lineintersect(l1,l2,pp);if (ret==true)printf("1\n");elseprintf("0\n"); return 0;}
0 0
- cf#21-B-Intersection-计算几何-求直线交点个数
- poj 1269 Intersecting Lines 计算几何 直线求交点
- hdoj 计算直线交点个数
- 计算几何--两圆的位置关系(求交点个数及交点坐标)
- Problem B 直线交点的个数
- 求n条直线交点个数
- hdu1466 计算直线的交点个数
- HDU 2857 Mirror and Light (计算几何求 对称点和两直线的交点)
- poj 1408 Fishnet(计算几何 叉积求面积 求两直线交点 暴力)
- POJ1269---Intersecting Lines (计算几何基础:直线相交求交点)
- FZU 1015 土地划分 (计算几何求线段交点个数)
- poj1269 Intersecting Lines(计算几何--两条直线的交点)
- UVA 11178 Morley’s Theorem(计算几何直线的交点)
- hdoj 1466 计算直线的交点数 (几何 DP)
- 计算几何之相交直线交点的求法
- POJ3304 Segments(计算几何,线段和直线的交点)
- POJ 1269 Intersecting Lines(计算几何 直线交点 点在直线上 直线平行)
- 求直线交点
- vs 删除行尾空格
- Linux信号—可靠信号与不可靠信号实践
- 学习计划
- 如何改掉坏习惯?
- 递归求n!
- cf#21-B-Intersection-计算几何-求直线交点个数
- R语言数据的导入与导出
- android多线程下载
- 搬运 JS闭包理解
- BZOJ 1024 SCOI2009 生日快乐 暴力搜索
- iOS 字符属性NSAttributedString描述
- git的使用—安装和初始化
- 数据结构实验之链表六:有序链表的建立
- 4.0 第八章 委托 lamdba表达式和事件