This seems to produce a quad polygon, and the mirror of it, based on:
the 1st leg pts, 2nd dist, its diagonal dist, 4th dist, and its diagonal.
; Arc Cosine
(defun A_Cos (X) (cond ((not (numberp X)) niL )
((= x 1.) 0.) ((= X -1.) pi)
(T (- (/ pi 2.) (atan (/ X (sqrt (abs (- 1. (* X X)))))))) ));
; a^=b^+c^-2bc cos A, A = arccos ((b^ + c^ - a^) / 2bc)
(defun A_Cos3 (A B C) ; Angle A is opposite side A
(if (and (/= 0 B) (/= 0 C))
(A_Cos (/ (- (+ (* B B) (* C C )) (* A A) ) (* 2 B C) ))) )
; P4 P3
; D24 D13
; D23
; a b
; P1 P2
; quadrilaterals by seg.1-2, Dists to CCW pts 3,4
(Defun Quad_Diag (P1 P2 D23 D13 D24 D41 / A1 ) ; ETC
; (GRAPHSCR) (redraw) (gr_ddc P1 1 7) (grdraw p1 p2 7)
(setq D12 (distance P1 P2) A12 (angle P1 P2) AQ (/ pi 2)
A1 (A_Cos3 D23 D12 D13) ; oppo A1, stbd side, port
P3db (* D13 (cos A1)) P3dh (* D13 (sin A1))
P3P12 (polar P1 A12 P3db) ; P3 perp on P1-P2 ray
P3P (polar P3P12 (+ A12 AQ) P3dh) ; turn port +
P3S (polar P3P12 (- A12 AQ) P3dh) ; starboard -
A2 (A_Cos3 D41 D24 D12) z(PN_"a2")
P4db (* D24 (cos A2)) P4dh (* D24 (sin A2))
P4P12 (polar P2 (- A12 pi) P4db) ; P4 perp on P1-P2 ray
P4P (polar P4P12 (+ A12 AQ) P4dh) ; turn port +
P4S (polar P4P12 (- A12 AQ) P4dh) ; starboard -
) (list P3P P4P P3S P4S) ) ;
P3P P4P are the pts to one quad, P3S P4S the mirror.
S