def trunk_section_length(tree): '''Length of the initial tree section Returns: Length of first section of tree or 0 if single point tree ''' try: _it = imap_val(mm.section_length, ptr.isection(tree)) return _it.next() except StopIteration: return 0.0
def i_section_radial_dist(tree, pos=None, use_start_point=False): '''Return an iterator of radial distances of tree sections to a given point The radial distance is the euclidian distance between the either the end-point or rhe start point of the section and the point in question. Parameters: tree: tree object pos: origin to which distances are measured. It must have at least 3\ components. The first 3 components are (x, y, z).\ (default tree origin) use_start_point: If true, calculate distance from section start point,\ else from end-point (default, False) ''' pos = tree.value if pos is None else pos sec_idx = 0 if use_start_point else -1 return imap_val(lambda s: mm.point_dist(s[sec_idx], pos), ptr.isection(tree))