For a piece of software that I am writing, I need to determine the angle between two 3-dimensional one-sided surfaces that intersect at a line. The surfaces are defined as triangles with a normal vector that determines the direction they are facing.
I am not sure how to explain this well, however, since the surfaces are facing one way and have a defined intersection, the resulting angle between them can be a reflex angle (larger than 180°). To my understanding, this means that calculating the angle simply from the normal vectors themselves is not applicable, as the position and direction of the surfaces relative to each other is not taken into account.
I have attached two exemplary images below, which hopefully make it clear what I am attempting to calculate.
This is a really interesting question!
You are right that without the defined intersection line, with only normal vector we cannot get the correct result, since the same normal vectors could give rise to both angle > 180 or < 180.
This question actually touches upon the concept of the local convexity of a shape. You can distinguish the case of >180 angles and < 180 angles by local convexity.
Let's have an example, consider a surface $ABC$ and $BCD$ intersecting at the line $BC$. We have the oriented normal vector $n_1$ for $ABC$, $n_2$ for $BCD$.
First, we can calculate the inner product and define $\theta=\arccos \langle n_1,n_2 \rangle$
Then we find the equation of the plane $ABC$, which is $n_1^Tx=b_1$, moreover $n^T_1x\geq b_1$ is the half-space that is "out" of the plane.
Next, you want to test the coordinate of $D$ (or any point on $BCD$ but not on the line $BC$)