[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3419] contrib/py/scripts/addons/ add_mesh_clusters:

Clemens Barth barth at root-1.de
Tue May 29 20:19:17 CEST 2012


Revision: 3419
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3419
Author:   blendphys
Date:     2012-05-29 18:19:17 +0000 (Tue, 29 May 2012)
Log Message:
-----------

1. Preset is supported now
2. The code for calculating cluster shapes has been partially 
   changed for faster calculations

Blendphys.

Modified Paths:
--------------
    contrib/py/scripts/addons/add_mesh_clusters/__init__.py
    contrib/py/scripts/addons/add_mesh_clusters/add_mesh_cluster.py

Modified: contrib/py/scripts/addons/add_mesh_clusters/__init__.py
===================================================================
--- contrib/py/scripts/addons/add_mesh_clusters/__init__.py	2012-05-29 07:25:28 UTC (rev 3418)
+++ contrib/py/scripts/addons/add_mesh_clusters/__init__.py	2012-05-29 18:19:17 UTC (rev 3419)
@@ -73,7 +73,7 @@
 class CLASS_ImportCluster(bpy.types.Operator):
     bl_idname = "mesh.cluster"
     bl_label = "Atom cluster"
-    bl_options = {'PRESET', 'UNDO'}
+    bl_options = {'REGISTER', 'UNDO', 'PRESET'}
 
     def execute(self, context):
 

Modified: contrib/py/scripts/addons/add_mesh_clusters/add_mesh_cluster.py
===================================================================
--- contrib/py/scripts/addons/add_mesh_clusters/add_mesh_cluster.py	2012-05-29 07:25:28 UTC (rev 3418)
+++ contrib/py/scripts/addons/add_mesh_clusters/add_mesh_cluster.py	2012-05-29 18:19:17 UTC (rev 3419)
@@ -258,8 +258,8 @@
 def vec_in_pyramide_square(atom_pos, size, skin):
     
     """
-    Please, leave all this! It tells the user the mathemetical way of
-    cutting out a pyramide with square base.
+    Please, if possible leave all this! The code documents the 
+    mathemetical way of cutting a pyramide with square base.
 
     P1 = Vector((-size/2, 0.0, -size/4))
     P2 = Vector((0.0, -size/2, -size/4))
@@ -298,21 +298,22 @@
     g5 = -n5 * P2
     """
  
-    # A much shorter way:
+    # A much faster way for calculation:
     size2 = size  * size
     size3 = size2 * size
-    n1 = Vector((-1/4*size2, -1/4*size2,  1/4*size2))
+    n1 = Vector((-1/4, -1/4,  1/4)) * size2
     g1 = -1/16 * size3
-    n2 = Vector(( 1/4*size2,  1/4*size2,  1/4*size2))
+    n2 = Vector(( 1/4,  1/4,  1/4)) * size2
     g2 = g1
-    n3 = Vector((-1/4*size2,  1/4*size2,  1/4*size2))
+    n3 = Vector((-1/4,  1/4,  1/4)) * size2
     g3 = g1
-    n4 = Vector(( 1/4*size2, -1/4*size2,  1/4*size2))
+    n4 = Vector(( 1/4, -1/4,  1/4)) * size2
     g4 = g1
-    n5 = Vector((       0.0,        0.0, -1/2*size2))
+    n5 = Vector(( 0.0,  0.0, -1/2)) * size2
     g5 = -1/8 * size3  
     
 
+    """
     distance_plane_1  = vec_dist_point_plane(n1, g1, atom_pos)
     on_plane_1 = vec_on_plane(n1,atom_pos,distance_plane_1)
     distance_plane_2  = vec_dist_point_plane(n2, g2, atom_pos)
@@ -323,7 +324,19 @@
     on_plane_4 = vec_on_plane(n4,atom_pos,distance_plane_4)
     distance_plane_5  = vec_dist_point_plane(n5, g5, atom_pos)
     on_plane_5 = vec_on_plane(n5,atom_pos,distance_plane_5)
+    """
 
+    distance_plane_1 = abs((n1 * atom_pos - g1)/n1.length)
+    on_plane_1 = (atom_pos - n1 * (distance_plane_1/n1.length)).length
+    distance_plane_2 = abs((n2 * atom_pos - g2)/n2.length)
+    on_plane_2 = (atom_pos - n2 * (distance_plane_2/n2.length)).length
+    distance_plane_3 = abs((n3 * atom_pos - g3)/n3.length)
+    on_plane_3 = (atom_pos - n3 * (distance_plane_3/n3.length)).length
+    distance_plane_4 = abs((n4 * atom_pos - g4)/n4.length)
+    on_plane_4 = (atom_pos - n4 * (distance_plane_4/n4.length)).length
+    distance_plane_5 = abs((n5 * atom_pos - g5)/n5.length)
+    on_plane_5 = (atom_pos - n5 * (distance_plane_5/n5.length)).length
+
     regular = True
     inner   = True
     if(atom_pos.length > on_plane_1):
@@ -342,30 +355,29 @@
 
     size = size * (1.0 - skin)
     
-    # As above
     size2 = size  * size
     size3 = size2 * size
-    n1 = Vector((-1/4*size2, -1/4*size2,  1/4*size2))
+    n1 = Vector((-1/4, -1/4,  1/4)) * size2
     g1 = -1/16 * size3
-    n2 = Vector(( 1/4*size2,  1/4*size2,  1/4*size2))
+    n2 = Vector(( 1/4,  1/4,  1/4)) * size2
     g2 = g1
-    n3 = Vector((-1/4*size2,  1/4*size2,  1/4*size2))
+    n3 = Vector((-1/4,  1/4,  1/4)) * size2
     g3 = g1
-    n4 = Vector(( 1/4*size2, -1/4*size2,  1/4*size2))
+    n4 = Vector(( 1/4, -1/4,  1/4)) * size2
     g4 = g1
-    n5 = Vector((       0.0,        0.0, -1/2*size2))
-    g5 = -1/8 * size3
+    n5 = Vector(( 0.0,  0.0, -1/2)) * size2
+    g5 = -1/8 * size3  
 
-    distance_plane_1  = vec_dist_point_plane(n1, g1, atom_pos)
-    on_plane_1 = vec_on_plane(n1,atom_pos,distance_plane_1)
-    distance_plane_2  = vec_dist_point_plane(n2, g2, atom_pos)
-    on_plane_2 = vec_on_plane(n2,atom_pos,distance_plane_2)
-    distance_plane_3  = vec_dist_point_plane(n3, g3, atom_pos)
-    on_plane_3 = vec_on_plane(n3,atom_pos,distance_plane_3)
-    distance_plane_4  = vec_dist_point_plane(n4, g4, atom_pos)
-    on_plane_4 = vec_on_plane(n4,atom_pos,distance_plane_4)
-    distance_plane_5  = vec_dist_point_plane(n5, g5, atom_pos)
-    on_plane_5 = vec_on_plane(n5,atom_pos,distance_plane_5)
+    distance_plane_1 = abs((n1 * atom_pos - g1)/n1.length)
+    on_plane_1 = (atom_pos - n1 * (distance_plane_1/n1.length)).length
+    distance_plane_2 = abs((n2 * atom_pos - g2)/n2.length)
+    on_plane_2 = (atom_pos - n2 * (distance_plane_2/n2.length)).length
+    distance_plane_3 = abs((n3 * atom_pos - g3)/n3.length)
+    on_plane_3 = (atom_pos - n3 * (distance_plane_3/n3.length)).length
+    distance_plane_4 = abs((n4 * atom_pos - g4)/n4.length)
+    on_plane_4 = (atom_pos - n4 * (distance_plane_4/n4.length)).length
+    distance_plane_5 = abs((n5 * atom_pos - g5)/n5.length)
+    on_plane_5 = (atom_pos - n5 * (distance_plane_5/n5.length)).length
     
     inner = False
     if(atom_pos.length > on_plane_1):
@@ -521,6 +533,10 @@
     regular = True
     inner   = True
 
+    """
+    Please, if possible leave all this! The code documents the 
+    mathemetical way of cutting an octahedron.
+
     P1 = Vector((-size/2, 0.0, 0.0))
     P2 = Vector((0.0, -size/2, 0.0))
     P3 = Vector((0.0, 0.0, -size/2))
@@ -575,7 +591,29 @@
     v82 = P1 - P6
     n8 = v82.cross(v81)
     g8 = -n8 * P1
+    """
+ 
+    # A much faster way for calculation:
+    size2 = size  * size
+    size3 = size2 * size
+    n1 = Vector((-1/4, -1/4, -1/4)) * size2
+    g1 = -1/8 * size3
+    n2 = Vector((-1/4,  1/4, -1/4)) * size2
+    g2 = g1
+    n3 = Vector((-1/4, -1/4,  1/4)) * size2
+    g3 = g1
+    n4 = Vector(( 1/4, -1/4,  1/4)) * size2
+    g4 = g1
+    n5 = Vector(( 1/4, -1/4, -1/4)) * size2
+    g5 = g1
+    n6 = Vector(( 1/4,  1/4,  1/4)) * size2
+    g6 = g1
+    n7 = Vector(( 1/4,  1/4, -1/4)) * size2
+    g7 = g1
+    n8 = Vector((-1/4,  1/4,  1/4)) * size2
+    g8 = g1
 
+    """
     distance_plane_1  = vec_dist_point_plane(n1, g1, atom_pos)
     on_plane_1 = vec_on_plane(n1,atom_pos,distance_plane_1)
     distance_plane_2  = vec_dist_point_plane(n2, g2, atom_pos)
@@ -592,7 +630,25 @@
     on_plane_7 = vec_on_plane(n7,atom_pos,distance_plane_7)
     distance_plane_8  = vec_dist_point_plane(n8, g8, atom_pos)
     on_plane_8 = vec_on_plane(n8,atom_pos,distance_plane_8)
+    """
 
+    distance_plane_1 = abs((n1 * atom_pos - g1)/n1.length)
+    on_plane_1 = (atom_pos - n1 * (distance_plane_1/n1.length)).length
+    distance_plane_2 = abs((n2 * atom_pos - g2)/n2.length)
+    on_plane_2 = (atom_pos - n2 * (distance_plane_2/n2.length)).length
+    distance_plane_3 = abs((n3 * atom_pos - g3)/n3.length)
+    on_plane_3 = (atom_pos - n3 * (distance_plane_3/n3.length)).length
+    distance_plane_4 = abs((n4 * atom_pos - g4)/n4.length)
+    on_plane_4 = (atom_pos - n4 * (distance_plane_4/n4.length)).length
+    distance_plane_5 = abs((n5 * atom_pos - g5)/n5.length)
+    on_plane_5 = (atom_pos - n5 * (distance_plane_5/n5.length)).length
+    distance_plane_6 = abs((n6 * atom_pos - g6)/n6.length)
+    on_plane_6 = (atom_pos - n6 * (distance_plane_6/n6.length)).length
+    distance_plane_7 = abs((n7 * atom_pos - g7)/n7.length)
+    on_plane_7 = (atom_pos - n7 * (distance_plane_7/n7.length)).length
+    distance_plane_8 = abs((n8 * atom_pos - g8)/n8.length)
+    on_plane_8 = (atom_pos - n8 * (distance_plane_8/n8.length)).length
+
     if(atom_pos.length > on_plane_1):
         regular = False
     if(atom_pos.length > on_plane_2):
@@ -615,78 +671,42 @@
 
     size = size * (1.0 - skin)
 
-    P1 = Vector((-size/2, 0.0, 0.0))
-    P2 = Vector((0.0, -size/2, 0.0))
-    P3 = Vector((0.0, 0.0, -size/2))
-    P4 = Vector((size/2, 0.0, 0.0))
-    P5 = Vector((0.0, size/2, 0.0))
-    P6 = Vector((0.0, 0.0, size/2))
+    size2 = size  * size
+    size3 = size2 * size
+    n1 = Vector((-1/4, -1/4, -1/4)) * size2
+    g1 = -1/8 * size3
+    n2 = Vector((-1/4,  1/4, -1/4)) * size2
+    g2 = g1
+    n3 = Vector((-1/4, -1/4,  1/4)) * size2
+    g3 = g1
+    n4 = Vector(( 1/4, -1/4,  1/4)) * size2
+    g4 = g1
+    n5 = Vector(( 1/4, -1/4, -1/4)) * size2
+    g5 = g1
+    n6 = Vector(( 1/4,  1/4,  1/4)) * size2
+    g6 = g1
+    n7 = Vector(( 1/4,  1/4, -1/4)) * size2
+    g7 = g1
+    n8 = Vector((-1/4,  1/4,  1/4)) * size2
+    g8 = g1
 
-    # First face
-    v11 = P2 - P1
-    v12 = P2 - P3
-    n1 = v11.cross(v12)
-    g1 = -n1 * P2
-    
-    # Second face
-    v21 = P1 - P5
-    v22 = P1 - P3
-    n2 = v21.cross(v22)
-    g2 = -n2 * P1 
-    
-    # Third face
-    v31 = P1 - P2
-    v32 = P1 - P6
-    n3 = v31.cross(v32)
-    g3 = -n3 * P1
-    
-    # Forth face
-    v41 = P6 - P2
-    v42 = P2 - P4
-    n4 = v41.cross(v42)
-    g4 = -n4 * P2
+    distance_plane_1 = abs((n1 * atom_pos - g1)/n1.length)
+    on_plane_1 = (atom_pos - n1 * (distance_plane_1/n1.length)).length
+    distance_plane_2 = abs((n2 * atom_pos - g2)/n2.length)
+    on_plane_2 = (atom_pos - n2 * (distance_plane_2/n2.length)).length
+    distance_plane_3 = abs((n3 * atom_pos - g3)/n3.length)
+    on_plane_3 = (atom_pos - n3 * (distance_plane_3/n3.length)).length
+    distance_plane_4 = abs((n4 * atom_pos - g4)/n4.length)
+    on_plane_4 = (atom_pos - n4 * (distance_plane_4/n4.length)).length
+    distance_plane_5 = abs((n5 * atom_pos - g5)/n5.length)
+    on_plane_5 = (atom_pos - n5 * (distance_plane_5/n5.length)).length
+    distance_plane_6 = abs((n6 * atom_pos - g6)/n6.length)
+    on_plane_6 = (atom_pos - n6 * (distance_plane_6/n6.length)).length
+    distance_plane_7 = abs((n7 * atom_pos - g7)/n7.length)
+    on_plane_7 = (atom_pos - n7 * (distance_plane_7/n7.length)).length
+    distance_plane_8 = abs((n8 * atom_pos - g8)/n8.length)
+    on_plane_8 = (atom_pos - n8 * (distance_plane_8/n8.length)).length
 
-    # Fith face
-    v51 = P2 - P3
-    v52 = P2 - P4
-    n5 = v51.cross(v52)
-    g5 = -n5 * P2
-
-    # Six face
-    v61 = P6 - P4
-    v62 = P6 - P5
-    n6 = v61.cross(v62)
-    g6 = -n6 * P6
-
-    # Seventh face
-    v71 = P5 - P4
-    v72 = P5 - P3
-    n7 = v71.cross(v72)
-    g7 = -n7 * P5
-
-    # Eigth face

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list