0

Matlab のdelaunayTriangulationクラスを使用して、mex 関数内で P [nx3 行列] の 3D ポイントのセットの三角形分割を作成したいと思います。

マトラブでは、

DT = delaunayTriangulation(P)

DT のクラス プロパティとして 'Points' と 'ConnectivityList' を使用して三角形分割を計算します。

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");

4

1 に答える 1