Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.76 KB | None | 0 0
  1. public float pointLineSegmentDistance(PVector l1, PVector l2, PVector p)
  2. {
  3. double x2 = l2.x - l1.x;
  4. double y2 = l2.y - l1.y;
  5. double z2 = l2.z - l1.z;
  6.  
  7. double px = p.x - l1.x;
  8. double py = p.y - l1.y;
  9. double pz = p.z - l1.z;
  10.  
  11. double dotprod = px * x2 + py * y2 + pz * z2;
  12. double projlenSq;
  13.  
  14. if (dotprod <= 0.0) projlenSq = 0.0;
  15. else
  16. {
  17. px = x2 - px;
  18. py = y2 - py;
  19. pz = z2 - pz;
  20. dotprod = px * x2 + py * y2 + pz * z2;
  21.  
  22. if (dotprod <= 0.0) projlenSq = 0.0;
  23. else projlenSq = dotprod * dotprod / (x2 * x2 + y2 * y2 + z2 * z2);
  24. }
  25.  
  26. double lenSq = px * px + py * py + pz * pz - projlenSq;
  27.  
  28. if (lenSq < 0) lenSq = 0;
  29.  
  30. return sqrt((float)lenSq);
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement