[Bf-extensions-cvs] [ec3507a] master: Small improvement to the PointGrid neighbors function: grid_factor can be calculated in advance and stored in GridLevels.
Lukas Tönne
noreply at git.blender.org
Sat Dec 13 11:06:55 CET 2014
Commit: ec3507a5fbce3526c24b8d74668630e7a88828e3
Author: Lukas Tönne
Date: Sat Dec 13 01:05:37 2014 +0100
Branches: master
https://developer.blender.org/rBACec3507a5fbce3526c24b8d74668630e7a88828e3
Small improvement to the PointGrid neighbors function: grid_factor
can be calculated in advance and stored in GridLevels.
===================================================================
M object_physics_meadow/hierarchical_dart_throw.py
===================================================================
diff --git a/object_physics_meadow/hierarchical_dart_throw.py b/object_physics_meadow/hierarchical_dart_throw.py
index 37347a5..47b2af5 100644
--- a/object_physics_meadow/hierarchical_dart_throw.py
+++ b/object_physics_meadow/hierarchical_dart_throw.py
@@ -37,11 +37,12 @@ class GridCell():
self.k = k
class GridLevel():
- __slots__ = ('index', 'size', 'weight', 'cells', 'debug')
+ __slots__ = ('index', 'size', 'grid_factor', 'weight', 'cells', 'debug')
- def __init__(self, index, size):
+ def __init__(self, index, size, radius):
self.index = index
self.size = size
+ self.grid_factor = size / radius
self.weight = size * size # 2D
self.cells = []
self.debug = None
@@ -137,7 +138,7 @@ class PointGrid():
def neighbors(self, level, cell_i, cell_j):
# multiplier between cell grid and base grid
- grid_factor = self.cell_grid_factor / (2 ** level.index)
+ grid_factor = level.grid_factor
ca = ifloor(cell_i * grid_factor)
cb = ifloor(cell_j * grid_factor)
@@ -188,8 +189,8 @@ def hierarchical_dart_throw_gen(radius, max_levels, xmin, xmax, ymin, ymax, debu
nj = jmax - jmin
nk = 1 # for 2D grid
- base_level = GridLevel(0, b0)
- levels = [base_level] + [GridLevel(i, base_level.size / (2**i)) for i in range(1, max_levels)]
+ base_level = GridLevel(0, b0, radius)
+ levels = [base_level] + [GridLevel(i, base_level.size / (2**i), radius) for i in range(1, max_levels)]
epsilon = levels[-1].weight * 0.5
for level in levels:
level.debug = debug
More information about the Bf-extensions-cvs
mailing list