Mode7-как перспективное преобразование в canvas?

Я делаю игровой движок на основе холста и задаюсь вопросом, есть ли у кого-нибудь какая-нибудь хорошая информация о том, как добиться перспективы в виде сверху. То, что я ищу, находится где-то посередине между традиционным видом с высоты птичьего полета и старым видом SNES mode7. Просто небольшой угол, чтобы создать иллюзию 3D.

Я пытаюсь выяснить, что будет лучшим способом борьбы с перекосом в перспективе. Я не делаю повороты, так что 3D-матрица будет за бортом, но мне нужно иметь возможность справляться с рендерингом слоев карты под постоянным углом, и было бы неплохо, если бы угол был регулируемым. Мне также нужно иметь дело с деформацией глубины. По сути, нижний ряд пикселей должен иметь ширину и высоту 1: 1, тогда для каждой строки он будет, например, на 5% меньше или что-то в этом роде. Я хотел бы иметь возможность использовать большой холст в качестве текстуры, а затем указать угол камеры в диапазоне от 0 до 90, где 0 идеально горизонтальное, а 90 - вид с высоты птичьего полета.

У кого-нибудь есть какие-нибудь связанные учебники или пример кода? Я немного искал в Интернете, но все, что я нашел, кажется либо неподходящим для использования в этом конкретном приложении, либо слишком сложным, выполняя всевозможные сумасшедшие 3D перекосы и ротации. Все, что я хочу, это взять обычную плиточную сетку и немного откинуть ее назад, без поворотов или подобных сложных вещей.

Вот пример того, что я хочу;Вот пример. http://img801.imageshack.us/img801/2176/perspectivesample.jpg

Нижний ряд пикселей имеет соотношение пикселей 1: 1, и каждый ряд выше этого постепенно уменьшается по горизонтали и вертикали. Исходная текстура верхней центральной области обычно составляет примерно половину высоты нижней центральной области, но она была уменьшена по вертикали и горизонтали, чтобы соответствовать перспективе.

Я думаю, что лучше всего подойдет для отображения текущего состояния области просмотра на другом холсте на плоском виде с высоты птичьего полета, с примерно 50% -ным дополнительным пространством сверху и по бокам, затем отрежьте верхнюю треугольную область от этой и перетащите ее на фактический видимый холст.

Единственная проблема в том, что я сосу на математику, когда дело доходит до вычисления углов и тому подобного.

Ответы на вопрос(2)

Ваш ответ на вопрос