// test_meet.java compile javac -cp . test_meet.java // execute java -cp . test_meet > test_meet_java.out public class test_meet // line p1 to p2, line p3 to p4 { public test_meet() { double p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y, pix, piy; double xmax, xmin, ymax, ymin, dx, dy, x, y; int nx = 9; int ny = 9; double ddx = 0.01; double ddy = 0.01; int nline = 3; int found = 0; double mat[][] = new double[2][3]; double p[] = new double[2]; double pmeet[] = new double[2]; double line[][] = new double[3][4]; boolean up = false; boolean down = false; boolean left = false; boolean right = false; System.out.println("test_meet.java running"); System.out.println("find intersect of line p1 to p2 with line p3 to p4"); System.out.println("point of intersect pix, piy computed"); line[0][0] = 4.0; // lp1 triangle line[0][1] = 1.0; line[0][2] = 1.0; // lp2 line[0][3] = 12.0; line[1][0] = 1.0; // lp2 line[1][1] = 12.0; line[1][2] = 12.0; // lp3 line[1][3] = 9.0; line[2][0] = 12.0; // lp3 line[2][1] = 9.0; line[2][2] = 4.0; // lp1 line[2][3] = 1.0; xmin = 2.0; xmax = 11.0; ymin = 2.0; ymax = 11.0; dx = (xmax-xmin)/(double)nx; dy = (ymax-ymin)/(double)ny; System.out.println("nx="+nx); System.out.println("xmax="+xmax+" xmin="+xmin+" dx="+dx); System.out.println("ny="+ny); System.out.println("ymax="+ymax+" ymin="+ymin+" dy="+dy); for(int i=0; i=p1x && pix<=p2x) || (pix<=p1x && pix>=p2x)) & piy>y ) { up=true; } p4x = x + ddx; p4y = y - ymax; // checking down meet(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y, pmeet); // pix, piy pix = pmeet[0]; piy = pmeet[1]; System.out.println("down m="+m+" pix,piy="+pmeet[0]+" "+pmeet[1]); if(((pix>=p1x && pix<=p2x) || (pix<=p1x && pix>=p2x)) & piy=p1y && piy<=p2y) || (piy<=p1y && piy>=p2y)) & pix=p1y && piy<=p2y) || (piy<=p1y && piy>=p2y)) & pix>x ) { right=true; } if(up && down && left && right) { System.out.println("point is inside"); System.out.println(" "); break; // exit m loop } } // end m System.out.println(" "); y = y + dy; } // end j System.out.println(" "); x = x + dx; } // end y System.out.println("test_meet.java finished"); } // end test_meet void meet(double p1x, double p1y, double p2x, double p2y, double p3x, double p3y, double p4x, double p4y, double pmeet[]) // pix, piy { double d12x, d12y, d34x, d34y, pix, piy; double p[] = {0.0, 0.0, 0.0}; double mat[][] = new double[2][3]; pmeet[0] = 0.0; pmeet[1] = 0.0; d12x = p2x-p1x; d12y = p2y-p1y; d34x = p4x-p3x; d34y = p4y-p3y; // System.out.println("d12x="+d12x+" d12y="+d12y); // System.out.println("d34x="+d34x+" d34y="+d34y); // line p1 to p2 (x-p1x)/d12x = (y-p1y)/d12y // x/d12x - y/d12y = p1x/d12x - p1y/d12y // line p3 to p4 (x-p3x)/d34x = (y-p3y)/d34y // x/d34x - y/d34y = p3x/d34x - p3y/d34y // solve two equations in two unknowns if(Math.abs(d12x)<1.0e-6 || Math.abs(d12y)<1.0e-6) {return;} if(Math.abs(d34x)<1.0e-6 || Math.abs(d34y)<1.0e-6) {return;} mat[0][0] = 1.0/d12x; mat[0][1] = -1.0/d12y; mat[0][2] = p1x/d12x - p1y/d12y; mat[1][0] = 1.0/d34x; mat[1][1] = -1.0/d34y; mat[1][2] = p3x/d34x - p3y/d34y; new simeq(2,mat,p); pix = p[0]; piy = p[1]; pmeet[0] = pix; pmeet[1] = piy; } // end meet public static void main (String[] args) { new test_meet(); } } // end test_meet