package com.handstudio.android.hzgrapherlib.util; import android.graphics.PointF; public class IntersectFinder { public static PointF getIntersectPoint(PointF p1, PointF p2, PointF p3, PointF p4) { PointF result = new PointF(); double t; double s; double under = (p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y); if(under==0) return null; double _t = (p4.x-p3.x)*(p1.y-p3.y) - (p4.y-p3.y)*(p1.x-p3.x); double _s = (p2.x-p1.x)*(p1.y-p3.y) - (p2.y-p1.y)*(p1.x-p3.x); t = _t/under; s = _s/under; if(t<0.0 || t>1.0 || s<0.0 || s>1.0) return null; if( (_t == 0) && (_s == 0)) { return null; } result.x = (float) (p1.x + t * (float)(p2.x-p1.x)); result.y = (float) (p1.y + t * (float)(p2.y-p1.y)); return result; } }