Мне не понятно, что вы хотите масштабировать. Это сама матрица или вы собираетесь использовать ее для масштабирования другого вектора?
Если вы говорите о векторе в трехмерном пространстве, я не понимаю, как матрица 4x4 может быть тем, что вы хотите. Масштабирование вектора в трехмерном пространстве с использованием матрицы будет означать размещение коэффициентов масштабирования по диагонали матрицы; недиагональные элементы равны нулю.
Вы путаете меня, когда ссылаетесь на матрицу 4x4. Вы уверены, что это то, что вы хотите?
Я думаю, вы хотите это:
Вот некоторый псевдокод, чтобы показать, как это делается:
for (int i = 0; i < 3; ++i)
{
v_prime[i] = c[i]*v[i];
}
Если вы хотите масштабировать матрицу 3x3, она будет выглядеть так:
Вот некоторый псевдокод, чтобы показать, как это делается:
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 3; ++j)
{
m_prime[i][j] = c[i]*m[i][j];
}
}
Обратите внимание, что оба эти решения следуют из вашего утверждения, что ваш вектор масштабирования состоит из трех компонентов. Если это не так, все ставки сняты.