Consider a convex quadrilateral with vertices at and and on each side draw a square lying outside the given quadrilateral, as in the picture below. Let and be the centers of those squares:
[asy]
size(220);
import TrigMacros;
rr_cartesian_axes(-3,8,-2,8,complexplane=true,usegrid = false);
pair A,B,C,D;
A = (2,1.5);
B= (4,1.8);
C = (5.3,3);
D = (3,5.3);
draw(A--B--C--D--A);
draw(A--(A + rotate(-90)*(B-A))--(B + rotate(90)*(A-B))--B);
draw(B--(B + rotate(-90)*(C-B))--(C + rotate(90)*(B-C))--C);
draw(C--(C + rotate(-90)*(D-C))--(D + rotate(90)*(C-D))--D);
draw(D--(D + rotate(-90)*(A-D))--(A + rotate(90)*(D-A))--A);
pair WW = (B + (A + rotate(-90)*(B-A)))/2;
dot(WW);
pair X = (C + (B + rotate(-90)*(C-B)))/2;
dot(X);
pair Y = (D + (C + rotate(-90)*(D-C)))/2;
dot(Y);
pair Z = (A + (D + rotate(-90)*(A-D)))/2;
dot(Z);
//draw(WW--Y,red);
//draw(X--Z,blue);
dot("$a$",A,SW);
dot("$b$",B,2*E);
dot("$c$",C,E);
dot("$d$",D,NNW);
dot("$p$",WW,E);
dot("$q$",X,S);
dot("$r$",Y,N);
dot("$s$",Z,S);
[/asy]