[brlcad-commits] SF.net SVN: brlcad:[45532] brlcad/trunk
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <br...@us...> - 2011-07-18 21:37:14
|
Revision: 45532 http://brlcad.svn.sourceforge.net/brlcad/?rev=45532&view=rev Author: brlcad Date: 2011-07-18 21:37:07 +0000 (Mon, 18 Jul 2011) Log Message: ----------- fixed a bug in NURBS plot where it was getting stuck in an infinite loop due to hitting an edge case where our v estimate for a given u was _exactly_ hitting the test point causing subsequent tests to repeatedly test the same point over and over. this edge case is actually a happy done-with-function case so we can just return the precise v value. Modified Paths: -------------- brlcad/trunk/NEWS brlcad/trunk/src/librt/opennurbs_ext.h Modified: brlcad/trunk/NEWS =================================================================== --- brlcad/trunk/NEWS 2011-07-18 21:23:26 UTC (rev 45531) +++ brlcad/trunk/NEWS 2011-07-18 21:37:07 UTC (rev 45532) @@ -9,15 +9,16 @@ descriptive text that emphasizes or further describes significant changes made. See document footer for additional details. ------------------------------------------------------------------------ +---------------------------------------------------------------------- --- 2011-07-XX Release 7.20.4 --- ---------------------------------------------------------------------- +* fixed infinite loop bug plotting NURBS wireframes - Sean Morrison * added ringworld proc-db - Erik Greenwald * fixed mged Manual page item in help menu - Brandon Hinesley ---------------------------------------------------------------------- +---------------------------------------------------------------------- --- 2011-07-01 Release 7.20.2 --- ---------------------------------------------------------------------- Modified: brlcad/trunk/src/librt/opennurbs_ext.h =================================================================== --- brlcad/trunk/src/librt/opennurbs_ext.h 2011-07-18 21:23:26 UTC (rev 45531) +++ brlcad/trunk/src/librt/opennurbs_ext.h 2011-07-18 21:37:07 UTC (rev 45532) @@ -541,6 +541,12 @@ while (du > 0.05) { guess = Ta + dT/2; p = m_trim->PointAt(guess); + + if (UNLIKELY(NEAR_EQUAL(p[X], u, SMALL_FASTF))) { + /* hit 'u' exactly, done deal */ + return p[Y]; + } + if (p[X] < u) { Ta = guess; VMOVE(A, p); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |