Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. the unit normal of triange (A, B, P) - call it N1
- 2. the unit normal of triangle (B, C, P) - call it N2
- 3. the unit normal (C,A,P) called N3
- N1*N2 == 1.0 ?
- N2*N3 == 1.0 ?
- private bool PointInTriangle(Vector3[] TriangleVectors, Vector3 P)
- {
- Vector3 A = TriangleVectors[0], B = TriangleVectors[1], C = TriangleVectors[2];
- if (SameSide(P, A, B, C) && SameSide(P, B, A, C) && SameSide(P, C, A, B))
- {
- Vector3 vc1 = Vector3.Cross(Vector3.Subtract(A, B), Vector3.Subtract(A, C));
- if (Math.Abs(Vector3.Dot(Vector3.Subtract(A, P), vc1)) <= .01f)
- return true;
- }
- return false;
- }
- private bool SameSide(Vector3 p1, Vector3 p2, Vector3 A, Vector3 B)
- {
- Vector3 cp1 = Vector3.Cross(Vector3.Subtract(B, A), Vector3.Subtract(p1, A));
- Vector3 cp2 = Vector3.Cross(Vector3.Subtract(B, A), Vector3.Subtract(p2, A));
- if (Vector3.Dot(cp1, cp2) >= 0) return true;
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement