简单三维重建的思路为:
将简单的多边形面片与线进行组合,即可得到复杂的几何模型。
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCellArray.h>
#include <vtkFloatArray.h>
#include <vtkPointData.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkInteractorStyleTrackballActor.h>
#include <vtkExtractEdges.h>
#include<vector>
using namespace std;
typedef vtkActorCollection* vtkActorCollection_Array;
#include <vtkLine.h>
#include <vtkCellData.h>
#include <vtkProperty.h>
#include<vtkPolyLine.h>
#include<vtkLineSource.h>
#include<vtkDataSetMapper.h>
#include<sstream>
#include<string>
using namespace std;
struct mypoint3d
{
mypoint3d(double a, double b, double c)
{
this->x = a;
this->y = b;
this->z = c;
}
double x;
double y;
double z;
};
//绘制直线
vtkSmartPointer<vtkDataSetMapper> Creatline(mypoint3d p1, mypoint3d p2)
{
vtkSmartPointer<vtkLineSource> lineSource = vtkSmartPointer<vtkLineSource>::New();
double pp1[3] = { p1.x, p1.y, p1.z };
double pp2[3] = { p2.x, p2.y, p2.z };
lineSource->SetPoint1(pp1);
lineSource->SetPoint2(pp2);
lineSource->Update(