+/*---------- proportional edge length variation ----------*/
+
+ /*
+ * Definition:
+ *
+ * See the diagram above.
+ * r
+ * cost = ( |PQ| - |QR| )
+ * Q,e
+ */
+
+double prop_edge_length_variation_cost(const Vertices vertices, int section) {
+ const double num_epsilon= 1e-6;
+
+ double cost= 0, exponent_r= 2;
+ int q, e,r, eback;
+
+ FOR_EDGE(q,e,r, OUTER) {
+ eback= edge_reverse(q,e);
+ double le= edge_lengths[q][e];
+ double leback= edge_lengths[q][eback];
+ double diff= le - leback;
+ double num= MIN(le, leback);
+ cost += pow(diff / (num + num_epsilon), exponent_r);
+ }
+ return cost;
+}
+