Only measuring the distance between opposite vertices is not enough; there are famous examples of non-circular shapes with equal width and you cannot tell the difference between a circle, and these shapes, just by measuring one distance per vertex.
Let's say your vertices are $v_1, \ldots, v_{40}$.
The shape of the tree trunk cross-section is only determined from the vertex distances up to rigid motions, so you can place $v_1$ anywhere you want in the plane (let's say $(0,0)$) and then you can place $v_2$ at any orientation with respect to $v_1$. Let's say you place $v_2$ on the positive $x$-axis.
In principle, you can incrementally place the vertices one at a time, if for each vertex $v_i$ you measure the distances $\|v_i-v_{i+1}\|$ and $\|v_i-v_{i+2}\|$: vertex $v_3$ forms a triangle with $v_1$ and $v_2$, so if you know the lengths of the two legs $\|v_1-v_3\|$ and $\|v_2-v_3\|$ you can solve for where to place $v_3$ in the plane. You can then solve for where to place $v_4$, etc.
I say "in principle" because although this technique will work, there are some practical downsides. If your measurements have some error, that error will accumulate, and each successive $v_i$ will be slightly more wrong in its position than the vertex before. You will then have loop closure failure, where the distance between $v_{40}$ and $v_1$ might be very wrong, by the time you have fully placed all of the points in the plane. (Moreover, I assume that with calipers it's easiest to measure distances between nearly-diametrically-opposite points, and difficult to measure distances between neighboring points.)
With modern computer algebra software, you can compute a more robust answer by solving the following variational problem:
$$\min_{v_2,\ldots,v_{40}} \sum_{d_{ij} \in \mathrm{measurements}} (\|v_i - v_j\| - d_{ij})^2$$
where you've collected some number of measured distances $d_{ij}$ between vertices $(i,j)$. The intuition for the formulation above is that you place a spring, with rest length $d_{ij}$, connecting vertices $i$ and $j$; after you connect up all the springs corresponding to all of your measurements, you let the springs relax to their minimum energy state; if it's not possible to place all vertices in a way that the springs are at their rest length (because of measurement errors), the above procedure will "smear out" the error to all of the vertices.
The problem above is only well-posed if you have a sufficiently dense set of measurements. In practice, if you measure the distance between each vertex and the 2-3 points on the opposite side of the tree closest to diametrically opposite, that should be enough.
You can solve the problem using Newton's method, or gradient descent. Use a circle as the initial guess.
If you need more help (such as a Mathematica notebook implementing the above), let me know.