2013-04-13 4 views
1

В питон компьютерной графики наборе, есть vec3 типа для представления трехкомпонентных векторов, но как я могу сделать следующее умножение:питона вектор * вектор ------> матрица

трехкомпонентная вектор умножить на ее результат транспонирования в виде матрицы 3 * 3, как показано в следующем примере:

a = vec3(1,1,1) 
matrix_m = a * a.transpose() 

Любой знает такой библиотеки, который может обрабатывать умножения матрицы размерности 1 * 3 другим одним из размерности 3 * 1 и привести к матрице 3 * 3.

Извините, я должен разъяснить немного больше об этом. Я говорю о матричной математике. Это как:

[a0, a1, a2] * [a0, a1, a2] T = [a0 * a0, a0 * a1, a0 * a2; a1 * a0, a1 * a1, a1 * a2; a2 * a0, a2 * a1, a2 * a2]

Может быть, я могу попробовать написать функцию себя, это так просто .....

+0

Чего вы хотите достичь? – TC1

+0

'a * a'' Будет только точечным произведением' a'. Который был бы скалярным значением. Я не понимаю, как вы ожидаете получить матрицу из этого. –

+1

@JoelCornett Очевидно, что умножение 3x1 на 1x3 создало бы матрицу 3x3. Это то, что он хочет? То, как я это понимал, это проблема, а не желаемый результат ... – TC1

ответ

1

Некоторые векторные математические программы, такие как MATLAB, счастливо отслеживают векторы столбцов и векторы строк как отдельные типы вещей. У Python Numpy нет, но он предлагает numpy.outer (A, B). К сожалению, графический набор (предположим, вы ссылаетесь на http://cgkit.sourceforge.net/) не отслеживает строки и столбцы, использует numpy (что было бы огромным излишеством) или предоставляло векторный векторный векторный векторный векторный вектор. Похоже, вам придется написать свою собственную функцию, чтобы сделать это.

+0

Большое спасибо за ваш ответ, я напишу сам. – shapeare

Смежные вопросы