Что надо сделать:
1) Рассчитать угол обзора по отношению к области вывода

Код AS3:
var halfWidth:Number = viewPort.width / 2;
var halfHeight:Number = viewPort.height / 2;
var focalLength:Number - фокальный радиус(расстояние);
var angle:Number = focalLength / Math.sqrt(halfWidth * halfWidth + halfHeight * halfHeight + focalLength * focalLength);
2) Сравнить нормаль камеры с нормалью полигона, скалярным произведением и сравнить с углом области вывода;

Код AS3:
if(dots(нормаль камеры и полигона) < angle)
{
// Полигон виден.
}
else
{
// Полигон не виден.
}
Вот и все, дальше оптимизируйте как вам надо и все будет нормально.
Цитата:
|
я не совсем в теме, но если правильно понял там берeтся локальный треугольник и потому в какую сторону он 'закручен' в глобальных координатах делается вывод видна ли плоскость, выглядит просто и надежно
|
Самый медленный метод, много расчетов и самое главное много доступов к данным.
Есть еще один способ, если у вас нет понятия viewPort(области вывода).
1) Повернуть нормаль полигона на FOV/2 к камере.
2) Сравнить нормали скалярным произведением, если больше 0 значит видим полигон.