Т.е., я могу взять любые 3 точки из 4х или это должны быть какие-то иные точки? Вообще, теории, конечно, уже начитался, кроссы и доты расписаны давно, проблема именно с уравнением плоскости и нормалью - по идее, достаточно ее одной и луча, для определения пересечения, но то ли у меня лыжи не едут, то ли неверно беру нормаль: у меня все плоскости образуют коробки, т.е., 2 компоненты нормали каждой стороны, по идее, должны быть равны нулю, а 3я 1 или -1, но так вычисления выходят неверны.
UPD. Все правильно было, я не поставил возврат значения и луч улетал в деревню дедушки, продолжая считать)
вот, если кому пригодится:

Код AS3:
// tested_direction кэширован заранее шоп копий не плодить
// p1 - одна из точек плоскости
// start начальная точка луча
tested_direction.x = p1.x - start.x;
tested_direction.y = p1.y - start.y;
tested_direction.z = p1.z - start.z;
// коэффициент приближения к плоскости
// если k > 1, значит луч не пересекает плоскость, если меньше, значит находится в одном полупространстве с ней
// trace_direction - вектор луча
var k:Number = tested_direction.Dot(normal) / trace_direction.Dot(normal);
// точка на плоскости
trace_point.x = start.x +trace_direction.x *k;
trace_point.y = start.y +trace_direction.y *k;
trace_point.z = start.z +trace_direction.z *k;