Consider the polygon $P$ in the following picture which has sides drawn in black and internal diagonals drawn in red and blue. $P$ has 4 convex angles and 4 concave angles in alternating order as it's clear from the picture.
I'm trying to understand if it is possible to shorten one or more sides or blue diagonals of $P$ in a continuous process in such a way that both the following conditions are satisfied:
by shortening said sides or blue diagonals of $P$ no other side or blue diagonal of $P$ gets longer
by shortening said sides or blue diagonals of $P$ the lengths the two red diagonals remain constant
All my attempts at doing so failed, so I guess the answer is no, but I can't produce a proof.




The short answer is: We can't make another polygon like that, and I have too much free time on my hands. The slightly longer answer is that we can take the derivative of a function from points to distances. Using linear programming, we show that we can't have all the partial distances be non-positive, which means the can't be all non-increasing; this is exactly the condition that no side or blue diagonal may get longer.
Let $P$ be a polygon defined by this ordered list of points $A, a, B, b, C, c, D, d$. Upper-case-letter points are the "outer" points, lower-case-letter points are the "inner" points.
Suppose we map eight arbitrary two-coordinate points to the sixteen distances of the sides and diagonals. (I will be ignoring those eight diagonals between outer and non-contiguous inner points, because we're able to solve this problem without them.) Let $\mu$ be our distance function $\mu : \mathbb{R}^{16} \to \mathbb{R}^{16}$, such that:
Here are the constant cross-diagonals and side distances.
And here are the inner-point diagonals that we are modeling.
Derive the equation, and you get the Jacobian. We're gonna look at the derivative, but divided, since we only care about positive and negative derivative. It'll also make life easier when we go to solve this thing.
$$D\mu/2 = \left[\frac{\partial \mu}{\partial A_x}\ \frac{\partial \mu}{\partial A_y}\frac{\partial \mu}{\partial a_x}\ \frac{\partial \mu}{\partial a_y} \cdots \frac{\partial \mu}{\partial d_x}\ \frac{\partial \mu}{\partial d_y}\right]$$
Each of those $\partial\mu$ derivatives is actually a column.
For the sake of a proper derivative, I'm going to insert a variable $t$; you can intuitively think of this as time if you want, and the polygon like it's sorta moving. Whatever. It's just there to make things more formal. We want $\frac{\partial \mu_i}{\partial t},$ dependent on some "movement derivatives" $\frac{\partial Point_c}{\partial t}$, like we're moving the point around. We get to choose the movement derivatives, and our goal is to choose them so that the distances either stay equal or decrease as we move our points. From the derivative equation, we know that:
$$\frac{\partial \mu_i}{\partial t} = \frac{\partial \mu_i}{\partial A_x}\frac{\partial A_x}{\partial t} + \cdots \frac{\partial \mu_i}{\partial d_y}\frac{\partial d_y}{\partial t}$$
So it's really like multiplying our matrix by a variable vector. Turns out, the matrix is pretty sparse.
What does each of these listings look like? For instance, in $\mu_1$, we get this equation:
$$\frac{\partial \mu_1}{\partial t} = (A_x - C_x)\frac{\partial A_x}{\partial t} + (A_y - C_y)\frac{\partial A_y}{\partial t} + (C_x - A_x)\frac{\partial C_x}{\partial t} + (C_y - A_y)\frac{\partial C_y}{\partial t}$$
At this point, I think it's a good idea to define our particular polygon. I found that these points describe the polygon well: $[(29, 51), (44, 127) (0, 218) ,(86, 185) ,(197, 282 ),(170, 169),(212, 0),(113, 59)]$. Remember, these are for the points $A, a, B, b, C, c, D, d$. I have a link below to plot this polygon, and you can check that it correctly "looks like" the original polygon in this problem, or is at least some acceptable approximation.
Given these polygon points, we can substitute actual numbers in the derivative now. Then we get:
$$\frac{\partial \mu_1}{\partial t} = -168\frac{\partial A_x}{\partial t} -231\frac{\partial A_y}{\partial t} + 168\frac{\partial C_x}{\partial t} + 231\frac{\partial C_y}{\partial t}$$
Hey, this looks like a linear equation! In that case, let
Axstand for $\frac{\partial A_x}{\partial t}$ in the following code listing.This is the LP File format for the system of linear equalities that we're trying to solve. A couple things to note here:
lp_solver, I noticed it tended to give solutions that were just the original polygon, but translated or rotated. Without loss of generality, we can fix one of the constant diagonals in place. I chose the $AC$ diagonal.freeat the bottom? In thelp_solverprogram, variables not listed asfreewill take on non-negative values. Conversely,freevariables take on all possible real values, including negative values. You can read more here.Using the
lp_solverprogram, punch that file in as input. You'll get zero for everything; none of the points can move. Replace the objective function withmax: bxormin: bx. You'll get zero, meaning that zero is the only solution. In other words, if you try any other points, you'll break one of our linear programming constraints.Suppose we only took the first twelve distance equations, that is, only the cross diagonals for the inner points. In that case, we do get a solution. It's unbounded, so take an inequality like this:
r_100: Ax - ax + Ay - ay + Bx - bx + By - by + Cx - cx + Cy - cy + Dx - dx + Dy - dy <= 50;and append it at the end of the lp file listing. When we run the lp_solver program, we get a solution vector for our partial derivatives, which when added to the original points produces this sequence of points: $[(29, 51),(41.71038, 127.451899),(14.5611, 226.59952),(93.82524, 176.04534),(197, 282),(167.6759, 169.555315),(221.24608, 3.43074),(113.992273, 48.5811)]$. Compare that shape with our original shape by going here. Copy/paste the text below and click "Load" to see the shapes. The new shape is on the left in red, the old shape is on the right in yellow.
I've taken the coordinates and compared the difference between the distances for the two. Turns out, it's not exactly correct; it deviates from the original polygon by about three units. The largest deviations are between $a$ and $B$ (distance $101.0791769$ units in the original, compared with $102.7975396$ in the new one) and $B$ and $b$ (distance $92.11405973$ in the original polygon, compared with $94.01345119$ in the new one). I would chalk this up to numerical stability problems.
A couple questions remain: