Guest User

Untitled

a guest
Jan 21st, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.78 KB | None | 0 0
  1. double EPS = 1.e-11; //10^(-11) - very important!!! doubles are not precise!!!
  2. public double ptLineDist(Point P){//distance from a point to a line
  3.             double cross = abs(cross(P, P1, P2));
  4.             double dist = sqrt((P1.x - P2.x)*(P1.x - P2.x) + (P1.y - P2.y)*(P1.y - P2.y));
  5.             return cross/dist;
  6.  }
  7.  
  8.  public double ptRayDist(Point P){ //distance from a point to a ray
  9.             double ret = ptLineDist(P);
  10.             double p1p2x = P2.x - P1.x;
  11.             double p1p2y = P2.y - P1.y;
  12.             double p1px = P.x - P1.x;
  13.             double p1py = P.y - P1.y;
  14.             double val = p1p2x*p1px + p1p2y*p1py;
  15.             if (val >= -EPS)
  16.                 return ret;
  17.             else return sqrt((P.x - P1.x)*(P.x - P1.x) + (P.y - P1.y)*(P.y - P1.y));  
  18. }
Add Comment
Please, Sign In to add comment