poj 1269 Intersecting Lines
2017-03-24 17:36
162 查看
题意:给个n,然后n行数据,每行四个点,代表两条直线,求两条直线平行,或者重合,或者相交,相交的话求出交点
叉积求交点公式:黑书p357
叉积求交点公式:黑书p357
#include <cstdio> #include <cstring> struct Point { int x,y; }; struct Line { Point s,e; }; Line line1,line2; int det(int x1, int y1, int x2, int y2) { return x1*y2 - x2*y1; } /****求ab和ac叉积****/ int cross(Point a, Point b, Point c) { return det(b.x-a.x,b.y-a.y,c.x-a.x,c.y-a.y); } int area(Point a, Point b, Point c) { return cross(a,b,c); } int main() { int n; while(scanf("%d",&n) != EOF) { printf("INTERSECTING LINES OUTPUT\n"); for(int i = 0; i < n; ++i) { scanf("%d %d %d %d %d %d %d %d",&line1.s.x,&line1.s.y,&line1.e.x,&line1.e.y,&line2.s.x,&line2.s.y,&line2.e.x,&line2.e.y); // line1.e.x-line1.s.x,line1.e.y-line1.s.y------>x1,y1 // line2.e.x-line2.s.x,line2.e.y-line2.s.y------>x2,y2 if((line1.e.x-line1.s.x)*(line2.e.y-line2.s.y) - (line1.e.y-line1.s.y)*(line2.e.x-line2.s.x) == 0)//共线,然后判断平行还是重合 { if(cross(line1.s,line1.e,line2.s) == 0) printf("LINE\n"); else printf("NONE\n"); } //肯定就有交点了 else { float s1 = area(line1.s,line1.e,line2.s)/2.0; float s2 = area(line1.s,line1.e,line2.e)/2.0; printf("POINT %.2f %.2f\n",(s1*line2.e.x-s2*line2.s.x)/(s1-s2),(s1*line2.e.y-s2*line2.s.y)/(s1-s2)); } } printf("END OF OUTPUT\n"); } return 0; }
相关文章推荐
- POJ 1269 Intersecting Lines 判断直线相交
- POJ1269(KB13-D 计算几何)
- poj 1269判断两条直线的位置关系 以及求交点
- poj 1269 Intersecting Lines[直线的关系]
- poj 1269 Intersecting Lines
- POJ 1269 Intersecting Lines
- poj1269(直线交点)
- POJ 1269 Intersecting Lines(直线相交判断,求交点)
- poj 1269 Intersecting Lines
- POJ 1269 Intersecting Lines(直线相交的判断)
- poj 1269 Intersecting Lines(判断两直线关系,并求交点坐标)
- Poj 1269 Intersecting Lines_几何模板
- 【计算几何】 poj1269 Intersecting Lines
- Intersecting Lines POJ - 1269
- poj 1269
- poj 1269 Intersecting Lines 判断两线段是否相交并求其交点
- POJ 1269 Intersecting Lines 判断直线间的状态(平行、重合、相交于一点)
- poj 2229&wustoj 1269划分数(简单dp)
- poj 1269 Intersecting Lines 计算几何 直线求交点
- POJ 1269 Intersecting Lines