[cig-commits] r11251 - cs/benchmark/cigma/trunk/scratch/cg/src

luis at geodynamics.org luis at geodynamics.org
Tue Feb 26 04:52:05 PST 2008


Author: luis
Date: 2008-02-26 04:52:05 -0800 (Tue, 26 Feb 2008)
New Revision: 11251

Added:
   cs/benchmark/cigma/trunk/scratch/cg/src/RenderTetrahedron.h
Log:
Added function for rendering a tetrahedral cell domain


Added: cs/benchmark/cigma/trunk/scratch/cg/src/RenderTetrahedron.h
===================================================================
--- cs/benchmark/cigma/trunk/scratch/cg/src/RenderTetrahedron.h	                        (rev 0)
+++ cs/benchmark/cigma/trunk/scratch/cg/src/RenderTetrahedron.h	2008-02-26 12:52:05 UTC (rev 11251)
@@ -0,0 +1,110 @@
+#ifndef __RENDER_TETRAHEDRON_H__
+#define __RENDER_TETRAHEDRON_H__
+
+#include "vtkRenderer.h"
+#include "vtkRenderWindow.h"
+
+#include "vtkDoubleArray.h"
+#include "vtkFloatArray.h"
+#include "vtkPoints.h"
+#include "vtkPointData.h"
+#include "vtkUnstructuredGrid.h"
+
+#include "vtkOutlineFilter.h"
+#include "vtkDataSetMapper.h"
+#include "vtkPolyDataMapper.h"
+#include "vtkActor.h"
+#include "vtkProperty.h"
+
+#include "vtkTetra.h"
+
+
+/**
+ * Render a tetrahedral cell onto a render object.
+ * @param ren    parent vtkRenderer object
+ * @param coords TBA
+ * @param dofs   TBA
+ */
+void RenderTetra(vtkRenderer *ren)
+{
+    assert(ren != 0);
+
+    int i;
+    const int nno = 4;
+    float pts[nno][3] = {
+        {-1.0, -1.0, -1.0},
+        {+1.0, -1.0, -1.0},
+        {-1.0, +1.0, -1.0},
+        {-1.0, -1.0, +1.0}
+    };
+
+    vtkFloatArray *coords = vtkFloatArray::New();
+    coords->SetNumberOfComponents(3);
+    coords->SetNumberOfTuples(nno);
+    for (i = 0; i < nno; i++)
+    {
+        coords->SetTuple(i, pts[i]);
+    }
+
+    vtkPoints *points = vtkPoints::New();
+    points->SetData(coords);
+
+    vtkTetra *tetra = vtkTetra::New();
+    for (i = 0; i < nno; i++)
+    {
+        tetra->GetPointIds()->SetId(i, i);
+    }
+
+    double dofs[nno] = {2.7, 4.1, 5.3, 3.4};
+    vtkDoubleArray *phi = vtkDoubleArray::New();
+    phi->SetName("phi");
+    for (i = 0; i < nno; i++)
+    {
+        phi->InsertNextValue(dofs[i]);
+    }
+
+    vtkUnstructuredGrid *ugrid = vtkUnstructuredGrid::New();
+    ugrid->Allocate(1,1);
+    ugrid->InsertNextCell(tetra->GetCellType(), tetra->GetPointIds());
+    ugrid->SetPoints(points);
+    ugrid->GetPointData()->SetScalars(phi);
+
+    vtkDataSetMapper *mapper = vtkDataSetMapper::New();
+    mapper->ImmediateModeRenderingOn();
+    mapper->SetInput(ugrid);
+    mapper->SetScalarRange(2.5, 5.5);
+
+    vtkActor *actor = vtkActor::New();
+    actor->SetMapper(mapper);
+    const bool showWireMesh = false;
+    if (showWireMesh)
+    {
+        mapper->ScalarVisibilityOff();
+        actor->GetProperty()->SetRepresentationToWireframe();
+        actor->GetProperty()->SetLineWidth(2);
+    }
+    ren->AddActor(actor);
+
+
+    /* Add an Outline Filter
+
+    vtkOutlineFilter *outlineData = vtkOutlineFilter::New();
+    outlineData->SetInput(ugrid);
+
+    vtkPolyDataMapper *outlineMapper = vtkPolyDataMapper::New();
+    outlineMapper->SetInputConnection(outlineData->GetOutputPort());
+
+    vtkActor *outlineActor = vtkActor::New();
+    outlineActor->SetMapper(outlineMapper);
+    outlineActor->GetProperty()->SetColor(1,1,1);
+    
+    ren->AddActor(outlineActor);
+
+    // */
+
+
+    ren->ResetCamera();
+    ren->GetRenderWindow()->Render();
+}
+
+#endif



More information about the cig-commits mailing list