Since your mesh only contains vertices and edges, we will have to find the angle or bisector between every possible combination of edges that share the same vertex. So, the first thing to do is to find the neighbours of each vertex. The fastest way to do that is to use the following expressions:
Then we are going to loop over the vertices and their neighbours and construct vectors going from the vertex to its neighbours:
Then, we loop over every combination of vectors computing the bisector vector, where the bisector vector $\vec{c}$ between the two vectors $\vec{a}$ and $\vec{b}$ using the following formula:
$$
\vec{c} = \vert\vert\vec{b}\vert\vert\vec{a} + \vert\vert\vec{a}\vert\vert\vec{b}
$$
Every combination of vectors can be computed using the expression:
list(zip(*combinations(vectors, 2)))
Where combinations
is a function in the itertools
module, so make sure to import it in the advanced node settings. So we can implement it as follows:
Constructing transformations based on those bisectors gives: