Я работал над демонстрацией рендеринга перспективной проекции с использованием javascript, недавно я добавил перспективную проекцию, и она работает как надо, за исключением случаев, когда я увеличиваю изображение.
Вот изображение этого странного поведения:![enter image description here](https://i.stack.imgur.com/dofWD.png)
Обратите внимание на то, как линии сетки собираются в одной точке.
Поэтому я сомневаюсь в двух вещах, другие формулы увеличения, которые я использую, неверны или есть что-то, чего я не понимаюв перспективе проекция математика.
Для масштабирования у меня просто есть глобальная переменная window.scaleFactor
, которую я умножаю на каждую точку:
Point.prototype.projection = function(matrix){
var point = $M([[this.x *window.scaleFactor],[this.y * window.scaleFactor],[this.z * window.scaleFactor],[1]]);
var projection = matrix.x(point);
return new Point(projection.e(1,1)/projection.e(4,1) + window.panX,projection.e(2,1)/projection.e(4,1) + window.panY,0);
}
Так же верно, или вычисление масштабирования должно бытьсвязанные с точкой зрения?
Вы можете попробовать демо здесь: http://ahmedkotb.0fees.net/3d/projection_demo.html
РЕДАКТИРОВАТЬ: Вы можете масштабировать с помощью колеса мыши и вращать, перетаскивая внутри холста ... Также яне проверял это кроме как на хроме извините за это.
Любая иллюстрация будет оценена, спасибо.