Calculate angles of a polygonal shape given by its sidelengths

48 Views Asked by At

Can someone tell me how to calculate the angles of this shape. The length of all sides are given. I need to say that these are just example side lengths ; I need a formula for variable lengths.

enter image description here

1

There are 1 best solutions below

6
On

The big issue is that the angles of a quadrilateral aren't defined in a unique way by its sidelengths because a quadrilateral isn't rigid. Think for example to a square that can be given the shape of a lozenge.

For more see : (What is the precise definition of a rigid shape?)

A convincing (so I think !) picture is the following one, where points $D$ and $B$ are fixed, constraining

  • $C$ to belong to an arc of circle with center B and radius $4$.

  • $A$ to belong to an arc of circle with center D and radius $7$.

enter image description here

Fig. 1 : Reminding the crank-handle movement in a steam locomotive...

Even if you specify a fifth length e.g., length $AB$, you will not have this unicity. Indeed,
for each allowable value of $AB$ ($8.3\leq AB \leq 13.4$ in your example), using the law of cosines (https://en.wikipedia.org/wiki/Law_of_cosines) you will get a unique value for angles $\hat C$ an $\hat D$ but not for $\hat A$ neither for $\hat B$...

Matlab program for the generation of the figure:

n=26;% number of polygons
d1=6.4;d2=4;d3=7;d4=12.3;
for k=0:n-1;
   a=pi*k/42;
   d5=sqrt(d1^2+d2^2+2*d1*d2*cos(a));%length CD
   b=acos((d3^2+d5^2-d4^2)/(2*d3*d5))+acos((d1^2+d5^2-d2^2)/(2*d1*d5));
   plot([d1,d1+d2*cos(a),d3*cos(b),0,d1],...
       [0,d2*sin(a),d3*sin(b),0,0],...
       'color',[k/n,0,1-k/n],'linewidth',0.5+(k==12));
end;