Maple computations

> area := proc(ngon)
local i,s,nvs;
nvs := nops(ngon);
s := 0;
for i from 2 to nvs-1 do
s := s+ linalg[det]( array(1..2,1..2,[
[op(expand(ngon[ (i-1) mod nvs +1]- ngon[1])) ],
[op(expand(ngon[i mod nvs +1]-ngon[1])) ] ])) od;
1/2*s end:

> ngon := [[0,0],[1,0],[a,b],[c,d]];

[Maple Math]

> area(ngon);

[Maple Math]

> nvs := nops(ngon);

[Maple Math]

> mids := [seq(1/2*(ngon[(i-1) mod nvs + 1] +ngon[i mod nvs + 1]),i=1..nops(ngon))]:
segs := [seq([(mids[(i-1) mod nvs + 1] ,ngon[(i+1) mod nvs + 1])],i=1..nops(ngon))]:

> insect := proc(seg1,seg2)
local sol,t,r,eqns;
eqns := expand(t*seg1[1]+(1-t)*seg1[2]- r*seg2[1]-(1-r)*seg2[2]);
sol := solve({eqns[1],eqns[2]},{t,r}):
subs(sol,expand(t*seg1[1]+(1-t)*seg1[2])) end:

> getnewgon := proc(ngon)
local i,nvs,mids,segs;
nvs := nops(ngon);
mids := [seq(1/2*(ngon[(i-1) mod nvs + 1] +ngon[i mod nvs + 1]),i=1..nops(ngon))];
segs := [seq([(mids[(i-1) mod nvs + 1] ,ngon[(i+1) mod nvs + 1])],i=1..nops(ngon))]:
map(simplify, [seq(insect([mids[(i-1) mod nvs +1],ngon[(i+1) mod nvs +1]], [ngon[i mod nvs +1],mids[(i+2) mod nvs +1]]),i=1..nvs)]);
end:

> newgon:= getnewgon(ngon);

[Maple Math]
[Maple Math]
[Maple Math]

> f := unapply(simplify(area(newgon)/area(ngon)),a,b,c,d);

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> plgon:=(a1,b1,c1,d1) ->
plots[display]([
plots[polygonplot](subs({a=a1,b=b1,c=c1,d=d1},newgon),
color=turquoise),
plots[polygonplot](subs({a=a1,b=b1,c=c1,d=d1}, ngon),color=yellow),

> plot(subs({a=a1,b=b1,c=c1,d=d1},segs),color=red,thickness=3),
plots[textplot]([.5,-.5,cat(`ratio =`,convert(evalf(f(a1,b1,c1,d1),5),string))])],scaling=constrained):

>

> plgon(2,3,0,1);

>

>

The analysis assuming that 3 of the points are [0,1], [0,0], and [1,0] and the 4th is [a,b] with a> 0, b > 0, and a+b > 1.

> factor(numer(f(a,b, 0,1)));

[Maple Math]
[Maple Math]

> top := collect(numer(f(a,b, 0,1)),a);

[Maple Math]
[Maple Math]

> bottom:=factor(collect(expand(denom(f(a,b,0,1))),a));

[Maple Math]

> lefthand := factor(bottom-5*top) ;

[Maple Math]

This is always >= 0 with equality when [Maple Math] or [Maple Math] and a+b >1, a > 0, b > 0.

> pl1 := plot( 3/2-x/2,x=0..3 ,color=blue,thickness=2):

> pl2 := plot( 2*x-1,x=2/3..3 ,color=blue,thickness=2):

>

> righthand:= factor(6*top-bottom) ;

>

The factor [Maple Math] is always positive for a > 0, b > 0, and [Maple Math] :

[Maple Math] = [Maple Math]

> [Maple Math]

> [Maple Math]

> [Maple Math]

> [Maple Math] = [Maple Math] > 0 except when b = 2

But in that case (b = 2), [Maple Math] = [Maple Math] = [Maple Math] > 0

Note that when b = 1, a = 0, the quadrangle collapses to a triangle and the factor is 0.

The factor [Maple Math] is also always positive for a > 0, b > 0, 1 < a+b:

[Maple Math] = [Maple Math]

> [Maple Math] = [Maple Math] > 0.

Note that when a = 1 and b = 0, we get the other degenerate case where the ratio becomes 1/6.

> pl1 := plot( 3/2-x/2,x=0..3 ,color=blue,thickness=2):

> pl2 := plot( 2*x-1,x=2/3..3 ,color=blue,thickness=2):

> frame := (x,y) -> plots[display]([plgon(x,y,0,1) ,pl1,pl2],view=[0..3,-.5..3],scaling=constrained):

> path := proc(lst,t0,t1,kind,m)
local x,y,p,n;

> #lst := [[0,0],[1,0],[1,1],[2,3]];
#kind := linear;
#t0:=0:
#t1:=1:
n:=nops(lst)-1:
#m:=10:

> readlib(spline);

> x :=unapply(spline( [seq(t0+j*(t1-t0)/n,j=0..n)],
[seq(lst[i][1],i=1..n+1)],t,kind),t):

> y :=unapply(spline( [seq(t0+j*(t1-t0)/n,j=0..n)],
[seq(lst[i][2],i=1..n+1)],t,kind),t):

> p := [x,y]:

> plots[display](
[seq(frame(op(p(t0 +i/(m-1)*(t1-t0)))),i=0..m-1)],
scaling=constrained,insequence=true); end:

> path([[2/3,1/3],[2/3,1/3],[1,1],[1,1],[3,0],[1,0],[1,0],[2,3],[2,3],[1,1],[1,1],[0,3/2],[0,1],[0,1],[2,3],[2/3,1/3]],0,1,linear,75);

> frame(2,3/2-1/2*2);

>