我正在使用python和ctypes。我有一个C函数将四元数(类似于虚数)转换成矩阵。我知道,send result variable in function like argument这是一个糟糕的基调,所以我如何才能将矩阵返回到python代码的c\u float*16类型数组中。你知道吗
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;
}
返回一个指向局部变量的指针。这将导致内存损坏。我建议创建一个
struct
启用矩阵并返回:因为这将导致复制一些内存量(约512字节),所以最好将矩阵作为输出参数传递:
相关问题 更多 >
编程相关推荐