2014-07-09 1 views
2
나는이 작업을 얻기 위해 노력하고 있어요 ( How to convert a vtkDoubleArray to an Eigen::matrix에서와 같은) C++ std::vectorvtkDoubleArray의 요소

성병에 vtkDoubleArray의 값 : 벡터

을 복사 할

얻는 방법 :

를 순간
typedef std::vector<double> row_type; 
typedef std::vector<row_type> matrix_type; 

int n_components = vtk_arr->GetNumberOfComponents(); 
int n_rows = vtk_arr->GetNumberOfTuples(); 

row_type curTuple(n_components); 
matrix_type cpp_matrix(n_rows, row_type(n_components)); 
for (int i=0; i<n_rows; i++) { 
    vtk_arr->GetTuple(i, curTuple); 
    cpp_matrix[i] = curTuple; 
} 

나는이 오류가 :

error C2664: 'void vtkDataArrayTemplate<T>::GetTuple(vtkIdType,double 
*)' : cannot convert parameter 2 from 'row_type' to 'double *' 

일부 vtk 방법은 거기를 (희망, 더 강력하고 effici ent) 이미 이것을 성취 했습니까?

답변

1

오류 메시지에 이있는 곳에서 row_type (std::vector<double>)을 전달 중입니다. 아마도 당신은 기본 데이터에 대한 포인터를 전달하려는 :

vtk_arr->GetTuple(i, curTuple.data()); 

더 많은 정보를 원하시면 std::vector::data를 참조하십시오.

+0

고마워요, 지금은 작동했습니다. – lib

+0

@lib -이 대답을 수락하십시오. –