Этот ответ задолго до факта, но, поскольку я нашел это в Google, возможно, это все равно кому-то поможет. Я просто хочу уточнить, что говорили JasonD и Notabene: намного проще выполнять вычисления отсечения (выясните, что вы должны увидеть, а что нет, из-за того, как вы смотрите, как далеко он находится, и т. Д. .). Вместо того, чтобы проверять, пересекаются ли плоскости на границах области видимости, вы просто сравниваете x, y, z всего с xMax, xMin, yMax, ect. , так как у вас просто есть куб. Это немного сложнее, если вы хотите показать только часть чего-либо, но математика все же лучше с единичным кубом, чем с усеченным конусом.
Пара вещей, которые я нахожу вводящими в заблуждение в других ответах:
- Вы не срезаете боковые стороны усеченного вида, вы как бы деформируете его в куб, используя преобразования однородной матрицы.
- Мы не конвертируем в 2D-экран с этим шагом. Этот шаг не является необходимым для этого. Теоретически мы могли бы выполнить всю нашу работу, не преобразовывая сначала усеченный конус в куб, что было бы более интуитивно, но сложнее в математике - но графика - это все о том, чтобы делать вычисления очень быстро, поскольку для средней игры / чего угодно, в среднем много вычислений в секунду.
Более подробно: это не обязательно единичный куб, в который мы конвертируем, это просто прямоугольный прямоугольник, чтобы наши расчеты выполнялись максимально. На самом деле в классе мы использовали поле, где камера обращена вниз по оси z, z - от 0 до 1, x - от -1 до 1, а y - от -1 до 1. В общем, в математике 1, 0, и -1 - хорошие цифры для упрощения вычислений, я предполагаю, что поэтому мы не идем от -100 до 100 или около того.
TLDR: это облегчает отсечение.
Редактировать: бобобо имеет суть этого. В общем, все треугольники: D.
Источник: Обучение в университете