[vtkusers] Drawing a single triangle

Kerry Loux louxkr at gmail.com
Sun Jan 11 17:03:02 EST 2009


Gerrick,

Thanks for the response.  I'm using C++, and created this method to create a
triangle object:

    // Create the objects
    Points = vtkPoints::New();
    Array = vtkFloatArray::New();
    Triangle = vtkTriangle::New();
    Grid = vtkUnstructuredGrid::New();
    TriangleMapper = vtkDataSetMapper::New();
    aTriangle = vtkActor::New();

    // Triangles have three points
    Points->SetNumberOfPoints(3);

    // Add some dummy points to the vtkPoints object
    Points->InsertPoint(0, 0.0, 0.0, 0.0);
    Points->InsertPoint(1, 0.0, 0.0, 0.0);
    Points->InsertPoint(2, 0.0, 0.0, 0.0);

    // Set up the float array
    Array->SetNumberOfComponents(3);
    Array->SetNumberOfTuples(3);
    Array->InsertTuple3(0, 1, 1, 1);
    Array->InsertTuple3(1, 2, 2, 2);
    Array->InsertTuple3(2, 3, 3, 3);

    // Set up the triangle object
    Triangle->GetPointIds()->SetId(0, 0);
    Triangle->GetPointIds()->SetId(1, 1);
    Triangle->GetPointIds()->SetId(2, 2);

    // Set up the unstructured grid object
    Grid->Allocate(1, 1);
    Grid->InsertNextCell(Triangle->GetCellType(), Triangle->GetPointIds());
    Grid->SetPoints(Points);
    Grid->GetPointData()->SetTCoords(Array);

    // Set up the mapper
    TriangleMapper->SetInput(Grid);

    // Set up the Actor
    aTriangle->SetMapper(TriangleMapper);

    aTriangle->GetProperty()->SetColor(1.0, 1.0, 0.0);// Yellow

    // Add it to the scene
    Renderer->GetRenderer()->AddActor(aTriangle);

After I create the triangle, I call an update method that does this:

    Points->SetPoint(0, Node1.X, Node1.Y, Node1.Z);
    Points->SetPoint(1, Node2.X, Node2.Y, Node2.Z);
    Points->SetPoint(2, Node3.X, Node3.Y, Node3.Z);

    // Re-render the scene
    Renderer->GetRenderer()->Render();

The first time I call this update function, the triangle is displayed
correctly.  Subsequent calls, however, do not update the position of the
triangle.  I tried changing the update method to include most of the
procedure for creating the object, but I still get no change in the object's
position.  Is there something I can do to update the position of the
triangle after it has been created?  Do you know why my update function
works the first time but has no effect after the first time it is called?

Thanks for your help!

-Kerry

On Wed, Jan 7, 2009 at 9:31 PM, Gerrick Bivins
<gbivins at objectreservoir.com>wrote:

>  You have to create a data set (vtkPolyData) and add the triangle as a
> cell and the points are specified as well.
> Look hear for an example:
>
> http://public.kitware.com/cgi-bin/viewcvs.cgi/*checkout*/Examples/DataManipulation/Python/BuildUGrid.py?root=VTK&content-type=text/plain
>
> Gerrick
>
>
> On 1/7/09 8:18 PM, "Kerry Loux" <louxkr at gmail.com> wrote:
>
> Hello,
>
> For my application, I need to display a single triangle in 3-space.  The
> triangle is not necessarily equilateral.  What is the easiest way to create
> a triangle object?  I considered vtkTriangle and vtkTriangleStrip, but I'm
> not clear on how to assign the locations of the vertices.  Also, as far as I
> can tell the vtkTriangle (and vtkCell) classes don't have any kind of
> GetOutput() function.  How do you map these classes to an actor?  I was
> hoping for some kind of primitive shape source, similar to vtkCyliderSource
> or vtkSphereSource, but there doesn't seem to be any.
>
> I'm still using the 5.0.4 release.
>
> Thanks for your advice!
>
> -Kerry
>
> ------------------------------
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090111/ff444d25/attachment.htm>


More information about the vtkusers mailing list