POJ1269 Intersecting Lines
2017-02-17 16:41
253 查看
一.原题链接:
http://poj.org/problem?id=1269二.题目大意:
分别给出两条直线的2个点,求出:直线平行不共线输出 NONE
直线共线输出 LINE
直线相交输出 POINT x y ((x,y)为交点坐标)
三.解题思路:
对于A(x1,y1) 与 B(x2,y2) 确定的直线AB,参数式为ax+by+c=0。有:a=y1−y2
b=x2−x1
c=(x1,y1)×(x2,y2)=x1y2−x2y1
对于直线AB 、CD ,他们的参数表达式分别为a1+b1+c1=0 和 a2+b2+c2=0
由克莱姆法则,令:
D=∣∣∣a1a2b1b2∣∣∣,D1=∣∣∣−c1−c2b1b2∣∣∣,D2=∣∣∣a1a2−c1−c2∣∣∣
平行不共线:D=0
共线:D=0,D1=0,D2=0 同时成立
相交:交点为(D1D,D2D)
求出直线参数再代入即可。
四.代码:
import java.util.Scanner; class Main { static final int MAX_SIZE = 110; static class Point{ double x, y; } //输入向量(x1, y1), (x2, y2) static double crossProduct(double x1, double y1, double x2, double y2){ return x1*y2- x2*y1; } //parameter[] ={a, b, c} 直线:ax+by+c=0 static void getLine(Point p1, Point p2, double[]parameter){ parameter[0] = p1.y- p2.y; parameter[1] = p2.x -p1.x; parameter[2] = p1.x*p2.y - p2.x*p1.y; } public static void main (String args[]){ Scanner in = new Scanner(System.in); int test = in.nextInt(); Point []p = new Point[4]; for (int i = 0; i < 4; i++){ p[i] = new Point(); } double [][] parameter = new double[2][3]; double a1, a2, b1, b2, c1, c2; System.out.println("INTERSECTING LINES OUTPUT"); while(test-- != 0){ for (int i = 0; i < 4; i++){ p[i].x = in.nextDouble(); p[i].y = in.nextDouble(); } getLine(p[0], p[1], parameter[0]); getLine(p[2], p[3], parameter[1]); a1 = parameter[0][0]; b1 = parameter[0][1]; c1 = parameter[0][2]; a2 = parameter[1][0]; b2 = parameter[1][1]; c2 = parameter[1][2]; double D1 = b2*(-c1)-b1*(-c2), D2 = a1*(-c2)-a2*(-c1), D = a1*b2 - a2*b1; if (D == 0 && D1 == 0 && D2 == 0){ System.out.println("LINE"); } else if (D == 0){ System.out.println("NONE"); } else { double x = D1/D; double y = D2/D; System.out.printf("POINT %.2f %.2f \n", x, y); } } System.out.println("END OF OUTPUT"); in.close(); } }
相关文章推荐
- poj 1269 Intersecting Lines (求直线交点)
- poj 1269 直线相交情况
- poj 1269 Intersecting Lines(判断线段相交,并求交点)
- POJ1269 计算几何直线与直线的关系
- poj 1269 Intersecting Lines
- (计算几何step8.1.2.2)POJ 1269 Intersecting Lines(使用叉积来计算两条直线的交点)
- POJ-1269判断线与线的关系
- poj 1269 Intersecting Lines
- poj 1269 Intersecting Lines
- [poj] 1269 [zoj] 1280 Interesting Lines || 求两直线交点
- POJ 1269(计算几何+直线相交)
- 【POJ 1269 Intersecting Lines】+ 线段相交
- poj 1269(两条直线交点)
- POJ 1269 Intersecting Lines(计算几何)
- POJ 1269 Intersecting Lines
- POJ1269 Intersecting Lines
- poj 1269Intersecting Lines (直线相交判断,求相交交点)
- poj 1269 Intersecting Lines
- POJ 1269 Intersecting Lines
- POJ 1269 Intresting Lines(直线之间的关系及求交点)