Source code for compas_tna.utilities.thickness
from __future__ import print_function
from __future__ import absolute_import
from __future__ import division
from numpy import array
from scipy.interpolate import griddata
__all__ = ['distribute_thickness']
[docs]def distribute_thickness(formdiagram):
"""Distribute thickness by interpolating provided values over the vertex grid."""
points = []
values = []
xi = []
index_key = {}
index = 0
for key in formdiagram.vertices():
t = formdiagram.vertex_attribute(key, 't')
xy = formdiagram.vertex_attributes(key, 'xy')
if t:
points.append(xy)
values.append(t)
else:
xi.append(xy)
index_key[index] = key
index += 1
points = array(points)
values = array(values)
xi = array(xi)
t = griddata(points, values, xi, method='linear')
t = t.flatten().tolist()
for index, value in enumerate(t):
key = index_key[index]
formdiagram.vertex_attribute(key, 't', value)
# ==============================================================================
# Main
# ==============================================================================
if __name__ == "__main__":
pass