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