<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">


<META content="MSHTML 5.50.4134.600" name=GENERATOR>
<STYLE>@page Section1 {size: 612.0pt 792.0pt; margin: 72.0pt 90.0pt 72.0pt 90.0pt; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
P.MsoPlainText {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
LI.MsoPlainText {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
DIV.MsoPlainText {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
SPAN.EmailStyle17 {
        COLOR: windowtext; FONT-FAMILY: Arial
}
DIV.Section1 {
        page: Section1
}
</STYLE>
</HEAD>
<BODY lang=EN-US vLink=purple link=blue>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=227450814-04022004>Hi 
John,</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=227450814-04022004></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=227450814-04022004>Just a 
guess, but in OpenGL specifications, the&nbsp;behaviour is undefined when 
drawing concave polygons. OpenGL says that all polygons must be convex and if 
you want to draw concave shapes, you must tessellate 
youself.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=227450814-04022004>But I 
don't know how&nbsp;this is handled in VTK.</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=227450814-04022004></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=227450814-04022004>Hope 
it helps,</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=227450814-04022004></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=227450814-04022004>-- 
Julien</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=227450814-04022004></SPAN></FONT>&nbsp;</DIV><FONT face=Tahoma>
<DIV><BR><FONT size=2><SPAN class=227450814-04022004>&nbsp;</SPAN>-----Message 
d'origine-----<BR><B>De&nbsp;:</B> John Platt 
[mailto:jcplatt@lineone.net]<BR><B>Envoyé&nbsp;:</B> mercredi 4 février 2004 
15:00<BR><B>À&nbsp;:</B> vtkusers@vtk.org<BR><B>Objet&nbsp;:</B> [vtkusers] 
Concaved Polygon edge shown straight<BR><BR></DIV></FONT></FONT>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
  <DIV class=Section1>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Hi users,</SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT>&nbsp;</P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">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.</SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT>&nbsp;</P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">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.</SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT>&nbsp;</P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">What am I missing? I have attached 
  the cpp file used with vtk 4.5.0.</SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT>&nbsp;</P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">Many thanks.</SPAN></FONT></P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">John Platt</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "stdafx.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "vtkPoints.h" </SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "vtkIdList.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "vtkCellType.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "vtkUnstructuredGrid.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "vtkDataSetMapper.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "vtkActor.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "vtkProperty.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include 
  "vtkRenderWindowInteractor.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "vtkRenderWindow.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">#include "vtkRenderer.h"</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">int APIENTRY WinMain(HINSTANCE 
  hInstance,</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  HINSTANCE hPrevInstance,</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  LPSTR&nbsp;&nbsp;&nbsp;&nbsp; lpCmdLine,</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nCmdShow)</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">{</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; // Define points.</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; vtkPoints* globalCoords = 
  vtkPoints::New();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; 
  globalCoords-&gt;Initialize();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  globalCoords-&gt;InsertNextPoint( 0,&nbsp;&nbsp; 0, 0 );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  globalCoords-&gt;InsertNextPoint( 1, 0.5, 0 ); // concave</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  globalCoords-&gt;InsertNextPoint( 2,&nbsp;&nbsp; 0, 0 );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  globalCoords-&gt;InsertNextPoint( 2,&nbsp;&nbsp; 2, 0 );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  globalCoords-&gt;InsertNextPoint( 1, 2.5, 0 ); // convexed</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  globalCoords-&gt;InsertNextPoint( 0,&nbsp;&nbsp; 2, 0 );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; // Define the polygon 
  topology.</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; vtkIdList* topology = 
  vtkIdList::New();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; for ( int nPts = 0; nPts &lt; 6; nPts++ 
  )</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; &nbsp;&nbsp; topology-&gt;InsertNextId( 
  nPts );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; // Add the points and the single cell to 
  an unstructired grid.</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; vtkUnstructuredGrid* UGrid = 
  vtkUnstructuredGrid::New();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; UGrid-&gt;SetPoints( globalCoords 
  );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; UGrid-&gt;InsertNextCell( VTK_POLYGON, 
  topology );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; // Convert the cell to graphic 
  primitives.</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; vtkDataSetMapper* faceMapper = 
  vtkDataSetMapper::New();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; faceMapper-&gt;SetInput( UGrid 
  );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; 
  faceMapper-&gt;ScalarVisibilityOff();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; // Create an actor to represent the cell 
  faces.</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; vtkActor* faceActor = 
  vtkActor::New();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; faceActor-&gt;SetMapper( faceMapper 
  );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; faceActor-&gt;GetProperty()-&gt;SetColor( 
  1, 0, 0 );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; // Create the Renderer, RenderWindow, and 
  RenderWindowInteractor.</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; vtkRenderer* renderer = 
  vtkRenderer::New();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; renderer-&gt;AddActor( faceActor 
  );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; vtkRenderWindow* renderWin = 
  vtkRenderWindow::New();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; renderWin-&gt;AddRenderer( renderer 
  );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; vtkRenderWindowInteractor* interactor = 
  vtkRenderWindowInteractor::New();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; interactor-&gt;SetRenderWindow( renderWin 
  );</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; 
  interactor-&gt;Initialize();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; renderWin-&gt;Render();</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Main message 
  loop:</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MSG 
  msg;</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while 
  (GetMessage(&amp;msg, NULL, 0, 0)) </SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; &nbsp;&nbsp; 
  TranslateMessage(&amp;msg);</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  DispatchMessage(&amp;msg);</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; </SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">&nbsp;&nbsp; return 0;</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt">}</SPAN></FONT></P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoPlainText><FONT face="Courier New" size=2><SPAN 
  style="FONT-SIZE: 10pt"></SPAN></FONT>&nbsp;</P>
  <P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB 
  style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT>&nbsp;</P></DIV></BLOCKQUOTE></BODY></HTML>