Advertisement
Guest User

Untitled

a guest
Mar 5th, 2015
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. 1. the unit normal of triange (A, B, P) - call it N1
  2. 2. the unit normal of triangle (B, C, P) - call it N2
  3.  
  4. 3. the unit normal (C,A,P) called N3
  5.  
  6. N1*N2 == 1.0 ?
  7. N2*N3 == 1.0 ?
  8.  
  9. private bool PointInTriangle(Vector3[] TriangleVectors, Vector3 P)
  10. {
  11. Vector3 A = TriangleVectors[0], B = TriangleVectors[1], C = TriangleVectors[2];
  12. if (SameSide(P, A, B, C) && SameSide(P, B, A, C) && SameSide(P, C, A, B))
  13. {
  14. Vector3 vc1 = Vector3.Cross(Vector3.Subtract(A, B), Vector3.Subtract(A, C));
  15. if (Math.Abs(Vector3.Dot(Vector3.Subtract(A, P), vc1)) <= .01f)
  16. return true;
  17. }
  18.  
  19. return false;
  20. }
  21.  
  22. private bool SameSide(Vector3 p1, Vector3 p2, Vector3 A, Vector3 B)
  23. {
  24. Vector3 cp1 = Vector3.Cross(Vector3.Subtract(B, A), Vector3.Subtract(p1, A));
  25. Vector3 cp2 = Vector3.Cross(Vector3.Subtract(B, A), Vector3.Subtract(p2, A));
  26. if (Vector3.Dot(cp1, cp2) >= 0) return true;
  27. return false;
  28.  
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement