Добавим матрицу Машстабирования
Загрузить архив с примерами ЗДЕСЬ.
Матрица Масштабирования, как и матрицы вращения и перемещения относятся к матрице Мира. Матрица Масштабирования выглядит так.
typedef float matrix4x4[4][4]; matrix4x4 mxScale = { ScaleX, 0.0, 0.0, 0.0, 0.0, ScaleY, 0.0, 0.0, 0.0, 0.0, ScaleZ, 0.0, 0.0, 0.0, 0.0, 1.0 }; matrix4x4 mxScale = { 1.5, 0.0, 0.0, 0.0, 0.0, 1.5, 0.0, 0.0, 0.0, 0.0, 1.5, 0.0, 0.0, 0.0, 0.0, 1.0 };
Мы умножаем вершины на эту матрицу что бы изменить размер модели по оси X,Y,Z. Данная матрица увеличивает размер модели куба по оси X в полтора раза, и по Y,Z тоже в полтора раза. Загрузить пример /src/01.001-soft_rend_main/Cube_RotateY_mxScale. Если нам нужно уменьшить модель а не увеличить, то значения нужно брать меньше 1.0 для X,Y,Z. При применении матрицы масштабирования следует помнить, что изначально модель находится в локальных координатах, и мы сначала должны масштабировать модель, затем повернуть, а не наоборот. То есть сначала все вершины модели нужно умножить на матрицу масштабирования, а затем на матрицу поворота, перемещения и т.д.