Is this quadrilateral tangential? Related: Is this quadrilateral cyclic?

Background

A tangential quadrilateral is a quadrilateral which has an incircle:



Examples include any square, rhombus, or a kite-like shape. Rectangles or parallelograms in general are not tangential.

Task

Given the four vertices of a quadrilateral (as Cartesian coordinates), determine if it is tangential.

Input &amp; output

For input, it is allowed to use any format that unambiguously specifies the four vertices' coordinates (eight real or floating-point numbers). You can assume the following on the input:


The points specify a simple convex quadrilateral, i.e. all internal angles are strictly less than 180 degrees, and the edges meet only at the vertices.
The points are specified in counter-clockwise order (or the other way around if you want).


For output, you can use one of the following:


Truthy/falsy values as defined by your language of choice (swapping the two is allowed), or
Two consistent values for true/false respectively.


It is acceptable if your code produces wrong output due to floating-point inaccuracies.

Test cases

Tangential

(0, 0), (0, 1), (1, 1), (1, 0)  # unit square
(-2, 0), (0, 1), (2, 0), (0, -1)  # rhombus
(1, -2), (-2, -1), (-1, 2), (4, 2)  # kite
(0, 0), (50, 120), (50, 0), (32, -24)  # all four sides different


Not tangential

(0, 0), (0, 1), (2, 1), (2, 0)  # rectangle
(0, 0), (1, 1), (3, 1), (2, 0)  # parallelogram


Scoring &amp; winning criterion

Standard code-golf rules apply. The shortest code in bytes wins.
MATL, 11 10 bytes

5:)d|2e!sd


Input is a vector of four complex numbers. Output is 0 (which is falsy) if tangential, or nonzero (which is truthy) if not tangential.

Try it online! Or verify all test cases.

Explanation

The code computes the difference between sums of lengths of opposite sides. This difference is zero if and only if the quatrilateral is tangential.

5:   % Range [1 2 3 4 5]
)    % Implicit input: complex vector of length 4. Index into it modularly.
     % This repeats the first vertex after the last
d    % Consecutive differences
|    % Absolute value, element-wise
2e   % Reshape as a 2-column matrix, in column-major order
!    % Transpose
s    % Sum of each column. Gives a vector of length 2
d    % Consecutive difference