<HTML dir=ltr><HEAD><TITLE>[vtkusers] Distances between polydata surfaces</TITLE>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.2900.2912" name=GENERATOR></HEAD>
<BODY>
<DIV id=idOWAReplyText44161 dir=ltr>
<DIV dir=ltr><FONT face=Arial color=#000000 size=2>Hello Steve,</FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face=Arial size=2>You can use <FONT size=2>vtkCellLocator with FindClosestPoint to find distance from a point in space to a surface.&nbsp; If you wish to know the distance from all points in a polydata, you can go through all points in that polydata and find closest point on other surface.&nbsp; It is quite efficient, although there exists other non-vtk implementations that are even faster.</FONT></FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face=Arial size=2>I attach&nbsp;3 examples in c++ (note that tcl does not have the method <FONT size=2>FindClosestPoint </FONT>available, you would have to wrap it yourself).</FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV dir=ltr><FONT face=Arial size=2>Example 1.&nbsp; closestp_curve2surface.cxx</FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2>Given an ASCII file of xyz coordinates for any number of points (e.g. along a line you wish to "project" down to the surface) and a target polydata surface file in .vtk format,&nbsp;output&nbsp;an ASCII file of modified xyz coordinates.</FONT></DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr><FONT face=Arial size=2>Example 2.&nbsp; closestpoint_diff_unsigned.cxx</FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2>Compute ditance between two surfaces and output distances between them.&nbsp; The distance is computed for each VERTEX CENTER.&nbsp; If you want per vertex (point on the surface), please modify.</FONT></DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>
<DIV dir=ltr><FONT face=Arial size=2>Example 3.&nbsp; closestpoint_diff_signed.cxx&nbsp; </FONT></DIV>
<DIV dir=ltr><FONT face=Arial size=2>Same as example 2, but with signed distance (sign depending on whether one surface inside or outside of the other, determined by the direction of the surface normal).</FONT></DIV></DIV>
<DIV dir=ltr>&nbsp;</DIV>
<DIV dir=ltr>&nbsp;Tron</DIV>
<DIV dir=ltr>&nbsp;</DIV></DIV>
<DIV id=idSignature28856 dir=ltr>
<DIV><FONT face=Arial color=#000000 size=2>Tron Darvann</FONT></DIV>
<DIV><FONT face=Arial size=2>Research Engineer, PhD, 3D-Laboratory</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><U>Tel:</U> (+45) 35 32 67 58 (lab) / (+45) 28 20 03 12 (mobile)</FONT></DIV>
<DIV><FONT face=Arial size=2><U>E-mail:</U> <A href="mailto:trd@odont.ku.dk">trd@odont.ku.dk</A></FONT></DIV>
<DIV><FONT face=Arial size=2><U>Skype:</U> tron.darvann</FONT></DIV>
<DIV><FONT face=Arial size=2><U>Fax:</U> (+45) 35 32 67 60</FONT></DIV>
<DIV><FONT face=Arial size=2><U>Mailing and Visiting Address:</U></FONT></DIV>
<DIV><FONT face=Arial size=2>3D-Lab, School of Dentistry</FONT></DIV>
<DIV><FONT face=Arial size=2>University of Copenhagen</FONT></DIV>
<DIV><FONT face=Arial size=2>Nørre Alle 20</FONT></DIV>
<DIV><FONT face=Arial size=2>DK-2200 Copenhagen N</FONT></DIV>
<DIV><FONT face=Arial size=2>Denmark</FONT></DIV></DIV>
<DIV dir=ltr><BR>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>Fra:</B> vtkusers-bounces+trd=odont.ku.dk@vtk.org på vegne af Steven Boyd<BR><B>Sendt:</B> ti 04-07-2006 03:57<BR><B>Til:</B> vtk<BR><B>Emne:</B> [vtkusers] Distances between polydata surfaces<BR></FONT><BR></DIV>
<DIV>
<P><FONT size=2>Hi,<BR><BR>I want to calculate the distance from one polydata surface to another.<BR>Does anybody have a suggestion for this?&nbsp; I don't see a class that seems<BR>to be suited.<BR><BR>Regards,<BR><BR>Steve<BR><BR><BR>--<BR>Steven Boyd<BR><BR>PhD, PEng<BR>Assistant Professor<BR>Department of Mechanical and Manufacturing Engineering<BR>University of Calgary<BR>2500 University Drive, N.W.<BR>Calgary, Alberta, Canada, T2N 1N4<BR><BR>tel. 1.403.220.4173&nbsp; fax. 1.403.282.8406&nbsp; skboyd@ucalgary.ca<BR>web. <A href="http://www.enme.ucalgary.ca/~skboyd">http://www.enme.ucalgary.ca/~skboyd</A><BR>-------------------------------------------------------------------<BR>_______________________________________________<BR>This is the private VTK discussion list.<BR>Please keep messages on-topic. Check the FAQ at: <A href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</A><BR>Follow this link to subscribe/unsubscribe:<BR><A href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</A><BR></FONT></P></DIV></BODY></HTML>