Skip to content

Commit 116f997

Browse files
committed
constraint angles for local optimization
1 parent 7146f96 commit 116f997

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

svv/tree/branch/bifurcation.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,6 +1851,7 @@ def construct_optimizer(tree, point, vessel, **kwargs):
18511851
lines[2, 3:6] = terminal
18521852
lines[:, 12:15] = (lines[:, 3:6] - lines[:, 0:3])/numpy.linalg.norm(lines[:, 3:6] - lines[:, 0:3]).reshape(-1, 1)
18531853
lines[0, 21] = data[vessel, 21]
1854+
parent_vessel = data[vessel, 17]
18541855
if tree.clamped_root and vessel == 0:
18551856
get_line_pt = map_clamped(tree, point, vessel)
18561857
def cost(x, func=tree_cost_2, d_min=d_min, terminal=terminal,
@@ -1910,13 +1911,22 @@ def cost(x, func=tree_cost_2, d_min=d_min, terminal=terminal,
19101911
vec1 = vec1/numpy.linalg.norm(vec1)
19111912
vec2 = vec2/numpy.linalg.norm(vec2)
19121913
vec3 = vec3/numpy.linalg.norm(vec3)
1913-
angle1 = numpy.arctan2(numpy.dot(vec1, vec3))*(180/numpy.pi)
1914-
angle2 = numpy.arctan2(numpy.dot(vec2, vec3))*(180/numpy.pi)
1914+
angle1 = numpy.arccos(numpy.dot(vec1, vec3))*(180/numpy.pi)
1915+
angle2 = numpy.arccos(numpy.dot(vec2, vec3))*(180/numpy.pi)
19151916
#angle3 = numpy.arccos(numpy.dot(vec3, vec1))*(180/numpy.pi)
1917+
#ADD Parent angles
1918+
19161919
if angle1 > 90 or angle2 > 90:
19171920
angle_penalty = penalty
19181921
else:
19191922
angle_penalty = 0.0
1923+
if parent_vessel != numpy.nan:
1924+
parent_vessel = int(parent_vessel)
1925+
vec4 = data[parent_vessel, 3:6] - data[parent_vessel, 0:3]
1926+
vec4 = vec4/numpy.linalg.norm(vec4)
1927+
angle3 = numpy.arccos(numpy.dot(vec3, vec4))*(180/numpy.pi)
1928+
if angle3 > 90:
1929+
angle_penalty += penalty
19201930
triad_penalty = numpy.max([0.0, -1.0 * numpy.min(dists - d_min)])/d_min * penalty
19211931
#[TODO] angle penalty
19221932
#[TODO] require that resulting parent vessel is at least a certain length? remove buffer region around triad

0 commit comments

Comments
 (0)