[Bf-extensions-cvs] [4b44a84] master: Partial fix for T44469: Do not fail because of division by zero.

Bastien Montagne noreply at git.blender.org
Thu Jun 4 13:42:44 CEST 2015


Commit: 4b44a84b7cd40a12525ac0db8271f2da119f3758
Author: Bastien Montagne
Date:   Thu Jun 4 13:40:21 2015 +0200
Branches: master
https://developer.blender.org/rBA4b44a84b7cd40a12525ac0db8271f2da119f3758

Partial fix for T44469: Do not fail because of division by zero.

This only fixes the 'symptoms', root of the issue here is that we get
a weird covariance matrix - Blender's own invert function errors on it,
this script's matrix_invert func does give some result, but in any case
final result is not what one would expect...

===================================================================

M	mesh_looptools.py

===================================================================

diff --git a/mesh_looptools.py b/mesh_looptools.py
index 49a26c4..1acd7a9 100644
--- a/mesh_looptools.py
+++ b/mesh_looptools.py
@@ -19,7 +19,7 @@
 bl_info = {
     "name": "LoopTools",
     "author": "Bart Crouch",
-    "version": (4, 6, 5),
+    "version": (4, 6, 6),
     "blender": (2, 72, 2),
     "location": "View3D > Toolbar and View3D > Specials (W-key)",
     "warning": "",
@@ -260,15 +260,14 @@ def calculate_plane(bm_mod, loop, method="best_fit", object=False):
         if not normal:
             # warning! this is different from .normalize()
             itermax = 500
-            iter = 0
-            vec = mathutils.Vector((1.0, 1.0, 1.0))
-            vec2 = (mat * vec)/(mat * vec).length
-            while vec != vec2 and iter<itermax:
-                iter+=1
+            vec2 = mathutils.Vector((1.0, 1.0, 1.0))
+            for i in range(itermax):
                 vec = vec2
                 vec2 = mat * vec
                 if vec2.length != 0:
                     vec2 /= vec2.length
+                if vec2 == vec:
+                    break
             if vec2.length == 0:
                 vec2 = mathutils.Vector((1.0, 1.0, 1.0))
             normal = vec2



More information about the Bf-extensions-cvs mailing list