我想使用Matlab的delaunayTriangulation类来构建mex函数中3D,P [nx3矩阵]中的一组点的三角剖分。
在Matlab中,
DT = delaunayTriangulation(P)
使用'点计算三角测量。 &安培; ' ConnectivityList'作为DT的类属性。
如何在mex文件中执行相同的操作?
void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) {
....
int n;
int elements = n*3;
double* P_ptr; /*contains 3D coordinates*/
P_ptr = mxMalloc(elements * sizeof(double));
/* fill up P_ptr with coordinates */
mxArray *DT, *P;
mxSetPr(P,P_ptr); /* Set P_ptr to mxArray P */
mxSetM(P, n);
mxSetN(P, 3);
mexCallMATLAB(1, &DT, 1, &P, "delaunayTriangulation");
....
}
这是正确的方法吗?另外,如果上面的代码是正确的,我如何从输出mxArray * DT访问类属性(Points,ConnectivityList)?
由于
修改:将DT
更改为&DT
,以确保上述代码的正确性。此外,根据Sam的解决方案,我可以通过以下代码访问该属性(例如" ConnectivityList"):
mxArray* variable_name = mxGetProperty(DT,0,"ConnectivityList");