<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF">
Bill,<br>
<br>
thank you so much for the prompt and effective reply.<br>
I uniformed the normals in the triangles and now it works.<br>
<br>
I must admit however that the graphical effect of the original version was interesting :-)<br>
<br>
Thanks again<br>
<br>
Michele<br>
<div class="moz-cite-prefix">Il 06/06/2013 18:09, Bill Lorensen ha scritto:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>Thanks for providing a complete example. It makes it much easrie to help.<br>
<br>
</div>
Your triangles are not ordered consistently. To see this set the backface property to a different color.<br>
<br>
</div>
#include &quot;vtkProperty.h&quot;<br>
<br>
<br>
...<br>
<br>
<br>
&nbsp; vtkSmartPointer&lt;vtkProperty&gt; back =<br>
&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkProperty&gt;::New();<br>
&nbsp; back-&gt;SetColor(1,0,0);<br>
<br>
&nbsp; vtkSmartPointer&lt;vtkActor&gt; actor = vtkSmartPointer&lt;vtkActor&gt;::New();<br>
&nbsp; actor-&gt;SetMapper(mapper);<br>
&nbsp; actor-&gt;SetBackfaceProperty(back);<br>
<br>
<br>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Thu, Jun 6, 2013 at 10:33 AM, Michele <span dir="ltr">
&lt;<a href="mailto:michele.conconi@unibo.it" target="_blank">michele.conconi@unibo.it</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
            .8ex; border-left:1px #ccc solid; padding-left:1ex">
Hi everybody,<br>
<br>
I am tring to build a polydata starting from an ordered set of points in<br>
space in order to evaluate its volume.<br>
<br>
I built an exapmple (see below) which generate a correct visual<br>
representation of the polydata, but the computed volume is wrong (6.8 rather<br>
then 48 mm^3).<br>
<br>
I tried aldo the vtkDelaunay2D, with no better results.<br>
<br>
What am I doing wrong?<br>
Thanks in advance for the help<br>
<br>
Michele<br>
<br>
------------------------------<br>
<br>
<br>
#include &lt;vtkVersion.h&gt;<br>
#include &lt;vtkSmartPointer.h&gt;<br>
#include &lt;vtkCellArray.h&gt;<br>
#include &lt;vtkCellData.h&gt;<br>
#include &lt;vtkDoubleArray.h&gt;<br>
#include &lt;vtkPoints.h&gt;<br>
#include &lt;vtkPolyLine.h&gt;<br>
#include &lt;vtkPolyData.h&gt;<br>
#include &lt;vtkPolyDataMapper.h&gt;<br>
#include &lt;vtkActor.h&gt;<br>
#include &lt;vtkRenderWindow.h&gt;<br>
#include &lt;vtkRenderer.h&gt;<br>
#include &lt;vtkRenderWindowInteractor.h&gt;<br>
#include &lt;vtkMassProperties.h&gt;<br>
#include &lt;vtkTriangle.h&gt;<br>
<br>
<br>
<br>
int main( int argc, char *argv[] )<br>
{<br>
&nbsp; &nbsp; &nbsp; &nbsp; // build the points set to be triangulated<br>
&nbsp; &nbsp; &nbsp; &nbsp; int Np = 5;<br>
&nbsp; &nbsp; &nbsp; &nbsp; double **P1, **P2, **P3;<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; P1 = new double*[Np];<br>
&nbsp; &nbsp; &nbsp; &nbsp; P2 = new double*[Np];<br>
&nbsp; &nbsp; &nbsp; &nbsp; P3 = new double*[Np];<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i = 0; i &lt; Np; i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P1[i] = new double[4];<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P2[i] = new double[4];<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P3[i] = new double[4];<br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i&lt;Np;i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P1[i][0] &nbsp; &nbsp; &nbsp; &nbsp;= 0&#43;i;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P1[i][1] &nbsp; &nbsp; &nbsp; &nbsp;= 1;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P1[i][2] &nbsp; &nbsp; &nbsp; &nbsp;= 0;<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P2[i][0] &nbsp; &nbsp; &nbsp; &nbsp;= 0&#43;i;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P2[i][1] &nbsp; &nbsp; &nbsp; &nbsp;= 3;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P2[i][2] &nbsp; &nbsp; &nbsp; &nbsp;= 2;<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P3[i][0] &nbsp; &nbsp; &nbsp; &nbsp;= 0&#43;i;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P3[i][1] &nbsp; &nbsp; &nbsp; &nbsp;= 5;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P3[i][2] &nbsp; &nbsp; &nbsp; &nbsp;= 4;<br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; vtkSmartPointer&amp;lt;vtkPoints&gt; points = vtkSmartPointer&lt;vtkPoints&gt;::New();<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i&lt;Np;i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; points-&gt;InsertNextPoint(P1[i]);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i&lt;Np;i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; points-&gt;InsertNextPoint(P2[i]);<br>
<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i&lt;Np;i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; points-&gt;InsertNextPoint(P3[i]);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i&lt;Np;i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; points-&gt;InsertNextPoint(P1[i][0],0,P1[i][2]);<br>
<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i&lt;Np;i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; points-&gt;InsertNextPoint(P2[i][0],0,P2[i][2]);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i=0;i&lt;Np;i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; points-&gt;InsertNextPoint(P3[i][0],0,P3[i][2]);<br>
<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; //build manually the triangle<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; vtkSmartPointer&lt;vtkCellArray&gt; triangles =<br>
vtkSmartPointer&lt;vtkCellArray&gt;::New();<br>
&nbsp; &nbsp; &nbsp; &nbsp; vtkSmartPointer&lt;vtkTriangle&gt; triangle =<br>
vtkSmartPointer&lt;vtkTriangle&gt;::New();<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; // ------------------------------------- base<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int j=3;j&lt;5;j&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i = (j*Np)&#43;1; i &lt; (j&#43;1)*Np; i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,i-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,i);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,Np&#43;i-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int j=4;j&lt;6;j&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i = j*Np; i &lt; (j&#43;1)*Np-1; i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,i);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,i&#43;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,i-Np&#43;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; // ---------------------------------------- side 1<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i = 1; i &lt; Np; i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,i-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,i);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,3*Np&#43;i-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i = 3*Np; i &lt; 4*Np-1; i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,i);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,i&#43;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,i-3*Np&#43;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; // ---------------------------------------- side 2<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i = 2*Np&#43;1; i &lt; 3*Np; i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,i-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,i);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,3*Np&#43;i-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int i = 5*Np; i &lt; 6*Np-1; i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,i);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,i&#43;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,i-3*Np&#43;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; // ---------------------------------------- side 3<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,0);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,3*Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,4*Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,4*Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,5*Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,4*Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,0);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,5*Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,2*Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,Np);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; // ---------------------------------------- side 4<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,4*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,5*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,2*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,5*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,6*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,5*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,2*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,6*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,3*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,2*Np-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; // -------------------- top<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int j=0;j&lt;2;j&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i = (j*Np)&#43;1; i &lt; (j&#43;1)*Np; i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,i-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,i);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,Np&#43;i-1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(int j=1;j&lt;3;j&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i = j*Np; i &lt; (j&#43;1)*Np-1; i&#43;&#43;)<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;Initialize();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(0,i);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(1,i&#43;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangle-&gt;GetPointIds()-&gt;SetId(2,i-Np&#43;1);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; triangles -&gt;InsertNextCell(triangle);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; // build the polydata<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; vtkPolyData *polyData = vtkPolyData::New();<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; polyData-&gt;SetPoints(points);<br>
&nbsp; &nbsp; &nbsp; &nbsp; polyData-&gt;SetPolys(triangles );<br>
<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; //evaluate the volume : expected outcome for the current points set 48<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; vtkMassProperties *mass = vtkMassProperties::New();<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; mass-&gt;SetInput(polyData);<br>
&nbsp; &nbsp; &nbsp; &nbsp; cout&lt;&lt;&quot;volume &quot;&lt;&lt;mass-&gt;GetVolume()&lt;&lt;endl;<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Setup actor and mapper<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vtkSmartPointer&amp;lt;vtkPolyDataMapper&gt; mapper =<br>
vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mapper-&gt;SetInput(polyData);<br>
<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vtkSmartPointer&lt;vtkActor&gt; actor = vtkSmartPointer&lt;vtkActor&gt;::New();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; actor-&gt;SetMapper(mapper);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Setup render window, renderer, and interactor<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vtkSmartPointer&lt;vtkRenderer&gt; renderer =<br>
vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vtkSmartPointer&lt;vtkRenderWindow&gt; renderWindow =<br>
vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; renderWindow-&gt;AddRenderer(renderer);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; renderWindowInteractor =<br>
vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; renderWindowInteractor-&gt;SetRenderWindow(renderWindow);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; renderer-&gt;AddActor(actor);<br>
<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; renderWindow-&gt;Render();<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; renderWindowInteractor-&gt;Start();<br>
<br>
return 0;<br>
}<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://vtk.1045678.n5.nabble.com/computing-the-volume-of-a-simple-multi-triangles-polydata-tp5721243.html" target="_blank">
http://vtk.1045678.n5.nabble.com/computing-the-volume-of-a-simple-multi-triangles-polydata-tp5721243.html</a><br>
Sent from the VTK - Users mailing list archive at Nabble.com.<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">
http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">
http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
Unpaid intern in BillsBasement at noware dot com<br>
</div>
</blockquote>
<br>
<div class="moz-signature">-- <br>
<b>Eng. Michele Conconi, Ph.D.</b> <br>
Health Sciences and Technologies - Interdepartmental Center for Industrial Research (HST - ICIR)
<br>
Alma Mater Studiorum - University of Bologna <br>
Viale Risorgimento 2, 40136, Bologna, Italy <br>
Email: <a class="moz-txt-link-abbreviated" href="mailto:michele.conconi@unibo.it">
michele.conconi@unibo.it</a> <br>
Website: <a class="moz-txt-link-freetext" href="http://grab.diem.unibo.it/">http://grab.diem.unibo.it/</a>
<br>
Office: (&#43;39) 051 20 93451 <br>
Mobile: (&#43;39) 329 0287996 <br>
<br>
<br>
<br>
<b>INFORMAZIONE RISERVATA E CONFIDENZIALE </b><br>
Questo messaggio contiene informazioni riservate e confidenziali. <br>
Se il lettore non fosse il destinatario del messaggio, inoltrato e ricevuto per errore,
<br>
il testo dovrà essere immediatamente cancellato dal computer del ricevente. <br>
E' assolutamente proibita qualunque circolazione, disseminazione o <br>
copia del messaggio spedito e/o ricevuto per errore. <br>
<br>
<b>CONFIDENTIALITY and WARNING NOTICE </b><br>
This message may contain legally privileged or confidential information. <br>
If the reader is not the intended recipient, you received this message in error <br>
and it should therefore be deleted from your computer at once. <br>
Any dissemination, distribution and copying of a message <br>
mistakenly sent or received is strictly forbidden.</div>
<p><br>
5x1000 AI GIOVANI RICERCATORI<br>
DELL'UNIVERSITÀ DI BOLOGNA <br>
Codice Fiscale: 80007010376 <br>
www.unibo.it/Vademecum5permille<br>
</p>
<p>Questa informativa è inserita in automatico dal sistema al fine esclusivo della realizzazione dei fini istituzionali dell’ente.
</p>
</body>
</html>