#include <vtkSmartPointer.h>
#include <vtkPlane.h>
#include <vtkPoints.h>

int main(int argc, char *argv[])
{

  vtkSmartPointer<vtkPoints> Points = vtkSmartPointer<vtkPoints>::New();
  Points->InsertNextPoint(0.0, 0.0, 0.0);
  Points->InsertNextPoint(1.0, 0.0, 0.0);
  Points->InsertNextPoint(0.0, 1.0, 0.0);

  vtkSmartPointer<vtkPlane> Plane = vtkSmartPointer<vtkPlane>::New();
  Plane->BestFitFromPoints(Points);

  double n[3];
  Plane->GetNormal(n);
  vtkstd::cout << "Normal: " << n[0] << " " << n[1] << " " << n[2] << vtkstd::endl;

  double origin[3];
  Plane->GetOrigin(origin);
  vtkstd::cout << "Normal: " << origin[0] << " " << origin[1] << " " << origin[2] << vtkstd::endl;

  return 0;
}
