annotate src/vtkplot.cpp @ 31:9a2279c9d003

Minor issues with stray namespace changes
author Jordi Gutiérrez Hermoso <jordigh@gmail.com>
date Wed, 03 Feb 2010 19:40:34 -0600
parents 24f3c4ed5c84
children 22f78a6faa3e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
29
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
1 #include <vtkPoints.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
2 #include <vtkPointData.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
3 #include <vtkDelaunay2D.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
4 #include <vtkLookupTable.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
5
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
6 #include <vtkPolyData.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
7 #include <vtkPolyDataNormals.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
8 #include <vtkPolyDataMapper.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
9
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
10 #include <vtkWarpScalar.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
11
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
12 #include <vtkCamera.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
13 #include <vtkActor.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
14 #include <vtkRenderWindow.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
15 #include <vtkRenderWindowInteractor.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
16 #include <vtkRenderer.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
17
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
18 #include <vtkInteractorStyleTerrain.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
19
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
20 #include <vtkSmartPointer.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
21 #include <vtkDoubleArray.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
22
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
23 #include <vtkGraphicsFactory.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
24 #include <vtkImagingFactory.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
25 #include <vtkWindowToImageFilter.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
26 #include <vtkPNGWriter.h>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
27
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
28 #include <string>
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
29 using std::string;
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
30
31
9a2279c9d003 Minor issues with stray namespace changes
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents: 29
diff changeset
31 #include "include/linalg.hpp"
29
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
32
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
33 typedef double (*Func3d)(double, double);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
34
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
35 void InitOffscreen(bool offscreen);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
36 vtkSmartPointer<vtkDelaunay2D> TriangulateTerrain(Func3d func);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
37
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
38 void PlotPoints(vtkSmartPointer<vtkDelaunay2D> delaunay,
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
39 bool offscreen=true,
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
40 const string& filename="vtkscreenshot.png");
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
41
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
42 double F(double x, double y)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
43 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
44 return atan(x*y*sin(y));
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
45 }
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
46
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
47 int main (int argc, char ** argv)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
48 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
49 auto delaunay = TriangulateTerrain(&F);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
50 PlotPoints(delaunay,true);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
51 return 0;
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
52 }
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
53
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
54 void InitOffscreen(bool offscreen)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
55 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
56 // Graphics Factory
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
57 vtkSmartPointer<vtkGraphicsFactory> graphics_factory
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
58 = vtkGraphicsFactory::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
59 graphics_factory->SetOffScreenOnlyMode( offscreen );
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
60 graphics_factory->SetUseMesaClasses( offscreen );
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
61
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
62 // Imaging Factory
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
63 vtkSmartPointer<vtkImagingFactory> imaging_factory
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
64 = vtkImagingFactory::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
65 imaging_factory->SetUseMesaClasses( offscreen );
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
66 }
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
67
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
68 vtkSmartPointer<vtkDelaunay2D> TriangulateTerrain(Func3d func)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
69 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
70
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
71 vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
72 vtkSmartPointer<vtkDoubleArray> scalars = vtkSmartPointer<vtkDoubleArray>::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
73
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
74 unsigned int GridSize = 50;
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
75 for(double x = -3; x < 3; x += 6.0/GridSize)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
76 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
77 for(double y = -3; y < 3; y += 6.0/GridSize)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
78 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
79 double z = func(x,y);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
80 vtkIdType idx = points->InsertNextPoint(x, y, z);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
81 scalars -> InsertTuple(idx, &z);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
82 }
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
83 }
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
84
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
85 //add the grid points to a polydata object
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
86 vtkSmartPointer<vtkPolyData> polydata = vtkPolyData::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
87 polydata->SetPoints(points);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
88 polydata->GetPointData() -> SetScalars(scalars);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
89
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
90 //triangulate the grid points
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
91 vtkSmartPointer<vtkDelaunay2D> delaunay = vtkDelaunay2D::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
92 delaunay->SetInput(polydata);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
93 delaunay->Update();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
94
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
95 return delaunay;
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
96 }
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
97
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
98 void PlotPoints(vtkSmartPointer<vtkDelaunay2D> delaunay,
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
99 bool offscreen,
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
100 const string& filename)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
101 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
102 InitOffscreen(offscreen);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
103
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
104 //Normals for Gourad shading
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
105 vtkSmartPointer<vtkPolyDataNormals> normals = vtkPolyDataNormals::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
106 normals -> SetInputConnection(delaunay ->GetOutputPort() );
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
107 normals -> SetFeatureAngle(60);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
108
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
109 //Set the colours for the rendering
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
110 vtkSmartPointer<vtkLookupTable> lut = vtkLookupTable::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
111 lut -> SetHueRange(0.66667, 0.0);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
112 lut -> SetNumberOfColors(256);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
113 lut -> SetRampToLinear();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
114 lut -> Build();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
115
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
116
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
117 // map the contours to graphical primitives
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
118 vtkSmartPointer<vtkPolyDataMapper> contMapper = vtkPolyDataMapper::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
119 contMapper->SetInput(normals -> GetOutput() );
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
120 contMapper->SetScalarRange(0,1);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
121 contMapper->SetLookupTable(lut);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
122 contMapper->ImmediateModeRenderingOn();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
123
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
124
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
125 // create an actor for the contours
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
126 vtkSmartPointer<vtkActor> contActor = vtkActor::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
127 contActor->SetMapper(contMapper);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
128
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
129 // a renderer and render window
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
130 vtkSmartPointer<vtkRenderer> ren1 = vtkRenderer::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
131 vtkSmartPointer<vtkRenderWindow> renWin = vtkRenderWindow::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
132 if(offscreen)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
133 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
134 renWin->SetOffScreenRendering(1);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
135 }
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
136 renWin->AddRenderer(ren1);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
137
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
138 // an interactor
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
139 vtkSmartPointer<vtkRenderWindowInteractor> iren
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
140 = vtkRenderWindowInteractor::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
141 iren->SetRenderWindow(renWin);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
142
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
143 // add the actors to the scene
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
144 ren1->SetBackground(0.0,0.0,0.0);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
145 ren1->GetActiveCamera()->SetViewUp(0,0,1);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
146 ren1->GetActiveCamera()->SetPosition(1, 1, 1);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
147 ren1->GetActiveCamera()->SetParallelProjection(1);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
148 ren1->AddActor(contActor);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
149 ren1->ResetCamera();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
150
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
151 // render an image (lights and cameras are created automatically)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
152 renWin->Render();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
153
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
154 if(offscreen)
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
155 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
156 // Write to file
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
157 vtkSmartPointer<vtkWindowToImageFilter> windowToImageFilter =
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
158 vtkSmartPointer<vtkWindowToImageFilter>::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
159 windowToImageFilter->SetInput(renWin);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
160 windowToImageFilter->Update();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
161
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
162 vtkSmartPointer<vtkPNGWriter> writer = vtkSmartPointer<vtkPNGWriter>::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
163 writer->SetFileName(filename.c_str());
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
164 writer->SetInput(windowToImageFilter->GetOutput());
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
165 writer->Write();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
166 }
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
167 else
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
168 {
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
169 //The style
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
170 vtkSmartPointer<vtkInteractorStyleTerrain> terrain_style
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
171 = vtkInteractorStyleTerrain::New();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
172
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
173 // Set the style
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
174 iren -> SetInteractorStyle(terrain_style);
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
175
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
176 // begin mouse interaction
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
177 iren->Start();
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
178 }
24f3c4ed5c84 Halfway to replacing all namespaces with the kwantxi namespace
Jordi Gutiérrez Hermoso <jordigh@gmail.com>
parents:
diff changeset
179 }