[vtkusers] Concaved Polygon edge shown straight
John Platt
jcplatt at lineone.net
Wed Feb 4 08:59:50 EST 2004
Hi users,
I have a single, plane, curvilinear quadrilateral with 2 straight sides,
1 concaved side and 1 convexed side. This is defined using 6 points and
VTK_POLYGON. This is the only cell in vtkUnstructuredGrid which is input
to vtkDataSetMapper.
The concaved edge is displayed straight while all other edges are shown
correctly. If the polygon is rotated, evidence of the correct shape can
be seen at certain orientations.
What am I missing? I have attached the cpp file used with vtk 4.5.0.
Many thanks.
John Platt
#include "stdafx.h"
#include "vtkPoints.h"
#include "vtkIdList.h"
#include "vtkCellType.h"
#include "vtkUnstructuredGrid.h"
#include "vtkDataSetMapper.h"
#include "vtkActor.h"
#include "vtkProperty.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// Define points.
vtkPoints* globalCoords = vtkPoints::New();
globalCoords->Initialize();
globalCoords->InsertNextPoint( 0, 0, 0 );
globalCoords->InsertNextPoint( 1, 0.5, 0 ); // concave
globalCoords->InsertNextPoint( 2, 0, 0 );
globalCoords->InsertNextPoint( 2, 2, 0 );
globalCoords->InsertNextPoint( 1, 2.5, 0 ); // convexed
globalCoords->InsertNextPoint( 0, 2, 0 );
// Define the polygon topology.
vtkIdList* topology = vtkIdList::New();
for ( int nPts = 0; nPts < 6; nPts++ )
topology->InsertNextId( nPts );
// Add the points and the single cell to an unstructired grid.
vtkUnstructuredGrid* UGrid = vtkUnstructuredGrid::New();
UGrid->SetPoints( globalCoords );
UGrid->InsertNextCell( VTK_POLYGON, topology );
// Convert the cell to graphic primitives.
vtkDataSetMapper* faceMapper = vtkDataSetMapper::New();
faceMapper->SetInput( UGrid );
faceMapper->ScalarVisibilityOff();
// Create an actor to represent the cell faces.
vtkActor* faceActor = vtkActor::New();
faceActor->SetMapper( faceMapper );
faceActor->GetProperty()->SetColor( 1, 0, 0 );
// Create the Renderer, RenderWindow, and RenderWindowInteractor.
vtkRenderer* renderer = vtkRenderer::New();
renderer->AddActor( faceActor );
vtkRenderWindow* renderWin = vtkRenderWindow::New();
renderWin->AddRenderer( renderer );
vtkRenderWindowInteractor* interactor =
vtkRenderWindowInteractor::New();
interactor->SetRenderWindow( renderWin );
interactor->Initialize();
renderWin->Render();
// Main message loop:
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20040204/09f04a85/attachment.htm>
More information about the vtkusers
mailing list