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

Clemens Barth barth at root-1.de
Wed May 30 00:03:50 CEST 2012


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

The code for calculating cluster shapes has been improved. 
Last changes have been done.

Blendphys.

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

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 18:23:52 UTC (rev 3420)
+++ contrib/py/scripts/addons/add_mesh_clusters/add_mesh_cluster.py	2012-05-29 22:03:48 UTC (rev 3421)
@@ -195,16 +195,6 @@
                                          radii,radii_ionic)
         ATOM_CLUSTER_ELEMENTS.append(li)
 
-# -----------------------------------------------------------------------------
-#                                                    Some small vector routines
-
-def vec_dist_point_plane(ne, gamma, v):
-
-    return abs( (ne * v - gamma) / ne.length )
-
-def vec_on_plane(n,atom,dist):
-
-    return (atom - n * (dist/n.length)).length
   
 # -----------------------------------------------------------------------------
 #                                                           Routines for shapes
@@ -311,21 +301,7 @@
     g4 = g1
     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)
@@ -398,12 +374,16 @@
     
     a = size/2.0
     #c = size/2.0*cos((30/360)*2.0*pi)
-    c= size * 0.4330127020
+    c = size * 0.4330127020
     #s = size/2.0*sin((30/360)*2.0*pi)  
     s = size * 0.25   
     #h = 2.0 * (sqrt(6.0)/3.0) * c
     h = 1.632993162 * c
 
+    """
+    Please, if possible leave all this! The code documents the 
+    mathemetical way of cutting a tetraeder.
+
     P1 = Vector((0.0,   a, 0.0))
     P2 = Vector(( -c,  -s, 0.0))
     P3 = Vector((  c,  -s, 0.0))    
@@ -437,16 +417,26 @@
     v42 = P2 - P3
     n4 = v41.cross(v42)
     g4 = -n4 * P1
+    """
 
-    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)
+    n1 = Vector(( -h*(a+s),    c*h,    c*a     ))
+    g1 = -1/2*c*(a*h+s*h)
+    n2 = Vector((        0, -2*c*h,  2*c*s     ))
+    g2 = -1/2*c*(a*h+s*h)
+    n3 = Vector((  h*(a+s),    c*h,    a*c     ))
+    g3 = -1/2*c*(a*h+s*h)
+    n4 = Vector((        0,      0, -2*c*(s+a) ))
+    g4 = -1/2*h*c*(s+a)
 
+    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
+
     regular = True
     inner   = True
     if(atom_pos.length > on_plane_1):
@@ -471,49 +461,24 @@
     #h = 2.0 * (sqrt(6.0)/3.0) * c
     h = 1.632993162 * c
 
-    P1 = Vector((0.0,   a, 0.0))
-    P2 = Vector(( -c,  -s, 0.0))
-    P3 = Vector((  c,  -s, 0.0))    
-    P4 = Vector((0.0, 0.0,  h))
-    C = (P1+P2+P3+P4)/4.0
-    P1 = P1 - C
-    P2 = P2 - C
-    P3 = P3 - C
-    P4 = P4 - C
-    
-    # First face
-    v11 = P1 - P2
-    v12 = P1 - P4
-    n1 = v11.cross(v12)
-    g1 = -n1 * P1
-    
-    # Second face
-    v21 = P2 - P3
-    v22 = P2 - P4
-    n2 = v21.cross(v22)
-    g2 = -n2 * P2
+    n1 = Vector(( -h*(a+s),    c*h,    c*a     ))
+    g1 = -1/2*c*(a*h+s*h)
+    n2 = Vector((        0, -2*c*h,  2*c*s     ))
+    g2 = -1/2*c*(a*h+s*h)
+    n3 = Vector((  h*(a+s),    c*h,    a*c     ))
+    g3 = -1/2*c*(a*h+s*h)
+    n4 = Vector((        0,      0, -2*c*(s+a) ))
+    g4 = -1/2*h*c*(s+a)
 
-    # Third face
-    v31 = P3 - P1
-    v32 = P3 - P4
-    n3 = v31.cross(v32)
-    g3 = -n3 * P3
+    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
     
-    # Forth face
-    v41 = P2 - P1
-    v42 = P2 - P3
-    n4 = v41.cross(v42)
-    g4 = -n4 * P1
-
-    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)
-    
     inner = False
     if(atom_pos.length > on_plane_1):
         inner = True
@@ -613,25 +578,6 @@
     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)
-    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_6  = vec_dist_point_plane(n6, g6, atom_pos)
-    on_plane_6 = vec_on_plane(n6,atom_pos,distance_plane_6)
-    distance_plane_7  = vec_dist_point_plane(n7, g7, atom_pos)
-    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)



More information about the Bf-extensions-cvs mailing list