[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