2
我正在使用python和ctypes。我有一個C函數將一個四元數(類似於一個虛數)轉換爲一個矩陣。我知道,在函數中發送結果變量就像參數是不好的語氣,所以我怎樣才能將矩陣返回到類型數組c_float * 16中的python代碼。矩陣從C函數到Python
float* QuaternionToMatrix(Quaternion q)
{
float matrix[16];
matrix[ 0] = 1.0f - 2.0f * (q.y * q.y + q.z * q.z);
matrix[ 1] = 2.0f * (q.x * q.y + q.z * q.w);
matrix[ 2] = 2.0f * (q.x * q.z - q.y * q.w);
matrix[ 3] = 0.0f;
matrix[ 4] = 2.0f * (q.x * q.y - q.z * q.w);
matrix[ 5] = 1.0f - 2.0f * (q.x * q.x + q.z * q.z);
matrix[ 6] = 2.0f * (q.z * q.y + q.x * q.w);
matrix[ 7] = 0.0f;
matrix[ 8] = 2.0f * (q.x * q.z + q.y * q.w);
matrix[ 9] = 2.0f * (q.y * q.z - q.x * q.w);
matrix[10] = 1.0f - 2.0f * (q.x * q.x + q.y * q.y);
matrix[11] = 0.0f;
matrix[12] = 0;
matrix[13] = 0;
matrix[14] = 0;
matrix[15] = 1.0f;
float* a = matrix;
return a;
}
如果我理解正確,而不是Python中的數組,您可以簡單地返回一個元組。 (它就像C中的一個列表) – 2012-08-02 15:42:14
你能寫一個例子,我如何在C中創建列表以將它返回給Python代碼。 – shestakoffvs 2012-08-02 15:47:08
您正在返回一個指向局部變量的指針。這會導致內存損壞。 – ecatmur 2012-08-02 16:11:35