2013-06-20 74 views
1

目標是從xml文件中繪製vtkLineSource的行。 因此,我從xml文件中檢索值到矢量中,然後循環遍歷嵌套循環中的矢量以檢索值並將它們作爲參數傳遞給繪圖函數。如何瀏覽嵌套for循環

這裏是我的代碼

for (std::vector<double>::iterator i = tab_recupere_X1.begin(); 
         i != tab_recupere_X1.end(); 
         i++) 
{ 
    p0[0]= *i; 
    std::cout << "p0[0]"<<p0[0]<<std::endl; 



    for (std::vector<double>::iterator j = tab_recupere_Y1.begin(); 
         j != tab_recupere_Y1.end(); 
         j++) 
    { 
     p0[1] = *j; 
     std::cout << "p0[1]"<<p0[1]<<std::endl; 
     // break; 

     for (std::vector<double>::iterator k = tab_recupere_X2.begin(); 
         k != tab_recupere_X2.end(); 
         k++) 
     { 
      p1[0] = *k; 
      std::cout << "p1[0]"<<p1[0]<<std::endl; 


      for (std::vector<double>::iterator p = tab_recupere_Y2.begin(); 
         p != tab_recupere_Y2.end(); 
         p++) 

      { 


      p1[1] = *p; 

      std::cout << "p1[1]"<<p1[1]<<std::endl; 




      vtkSmartPointer<vtkLineSource> lineSource = 
       vtkSmartPointer<vtkLineSource>::New(); 
      lineSource->SetPoint1(p0); 
      lineSource->SetPoint2(p1); 
      lineSource->Update(); 

      vtkSmartPointer<vtkPolyDataMapper> mapper =    vtkSmartPointer<vtkPolyDataMapper>::New(); 
mapper->SetInputConnection(lineSource->GetOutputPort()); 
vtkSmartPointer<vtkActor> actor = 
vtkSmartPointer<vtkActor>::New(); 
actor->SetMapper(mapper); 
actor->GetProperty()->SetLineWidth(4); 

vtkSmartPointer<vtkRenderer> renderer = 
vtkSmartPointer<vtkRenderer>::New(); 
vtkSmartPointer<vtkRenderWindow> renderWindow = 
vtkSmartPointer<vtkRenderWindow>::New(); 
renderWindow->AddRenderer(renderer); 
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = 
vtkSmartPointer<vtkRenderWindowInteractor>::New(); 
renderWindowInteractor->SetRenderWindow(renderWindow); 

renderer->AddActor(actor); 

renderWindow->Render(); 
renderWindowInteractor->Start(); 


    } 



     } 

    } 

} 

但最後一個循環將無限期運行,無需停止,並沒有什麼已經繪就。 我使用了(break),但沒有任何改進。

我的目的是爲每次迭代,檢索x和y的值並畫線。

你能幫助我嗎! 預先感謝您。

+5

我建議你先啓動一個調試器並逐步通過你的代碼來找出循環不停止的原因。 –

回答

0

好的,我認爲有點難以理解代碼中的錯誤。我什麼都看不到明顯的(也許別人會),但這裏有幾個點,幫助你找出到底是怎麼回事:

  • 你試過註釋掉所有的功能在你的上環(與迭代器p)?你這樣做是否有效?

  • 你可能不想在這個大循環中做任何顯示,你應該建立或繪製一切,然後才顯示完成。

  • 重構此代碼將是一個好主意,你可能知道你現在在做什麼,但在6個月內如何?我甚至沒有提到這樣的事實:即使錯誤修復是一個字符,其他人看到這個代碼也可能會放棄理解它或者自己重寫整個事情。