|
|
#macro TestIsect(A, B, C, P, Q)
#local AB = B - A;
#local AC = C - A;
#local N = vcross(AB, AC);
#local PQ = Q - P;
#local _t = vdot(N, A - P) / vdot(N, PQ);
#local Isect = ((_t >= 0) & (_t <= 1));
#if (Isect)
#local I = P + PQ*_t;
#local AI = I - A;
#local J = vcross(N, AB);
#local K = vcross(N, AC);
#local _u = vdot(AI, K) / vdot(AB, K);
#local _v = vdot(AI, J) / vdot(AC, J);
#local Isect = ((_u >= 0) & (_v >= 0) & (_u + _v <= 1));
#end
Isect
#end
Andrew.
PS. Annoying that I have to put the underscores on those variable
names... grrr!
Post a reply to this message
|
|