[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1814] contrib/py/scripts/addons/ gpencil_retopo/retopo.py: improved line joining, allow for some overlap.

Campbell Barton ideasman42 at gmail.com
Mon Apr 11 11:04:20 CEST 2011


Revision: 1814
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1814
Author:   campbellbarton
Date:     2011-04-11 09:04:20 +0000 (Mon, 11 Apr 2011)
Log Message:
-----------
improved line joining, allow for some overlap.

Modified Paths:
--------------
    contrib/py/scripts/addons/gpencil_retopo/retopo.py

Modified: contrib/py/scripts/addons/gpencil_retopo/retopo.py
===================================================================
--- contrib/py/scripts/addons/gpencil_retopo/retopo.py	2011-04-11 08:05:22 UTC (rev 1813)
+++ contrib/py/scripts/addons/gpencil_retopo/retopo.py	2011-04-11 09:04:20 UTC (rev 1814)
@@ -243,7 +243,7 @@
             f += (co - co_prev).length
             co_prev = co
         self.length = f
-    
+
     def calc_closed(self, precision):
         return (self.points[0] - self.points[-1]).length < (self.length / precision)
 
@@ -353,16 +353,39 @@
             p2a = s2.points[-1]
             p2b = s2.points[-2]
 
-        # compare length between tips
-        if (p1a - p2a).length > (length_average / precision):
-            return False
-
         v1 = p1a - p1b
         v2 = p2b - p2a
 
         if v1.angle(v2, ANG_LIMIT) >= ANG_LIMIT:
             return False
 
+        # trim s2, allow overlapping line.
+        v2_test_1 = p2b - p2a
+        if dir2 is False:
+            i = 2
+            while (p2b - p1a).length < (p2a - p1a).length and i < len(s2.points):
+                p2a = p2b
+                p2b = s2.points[i]
+                i += 1
+        else:
+            i = -3
+            while (p2b - p1a).length < (p2a - p1a).length and -i <= len(s2.points):
+                p2a = p2b
+                p2b = s2.points[i]
+                i -= 1
+
+        # when trimming did we we turn a corner?
+        v2_test_2 = p2b - p2a
+        if v2_test_1.angle(v2_test_2, ANG_LIMIT) >= ANG_LIMIT:
+            return False
+        del v2_test_1
+        del v2_test_2
+        # end trimming
+
+        # compare length between tips
+        if (p1a - p2a).length > (length_average / precision):
+            return False
+
         # print("joining!")
         return True
 



More information about the Bf-extensions-cvs mailing list