Where to point a low-orbit ion cannon (asking for a friend) Challenge

Premise

Bob lost1 Alice's precious grand piano. Big mistake. Alice has now stolen Bob's low-orbit ion cannon.

Alice refuses to just make up with Bob, so let's help her give him a light tap on the roof. Suppose that from the top Bob's house looks like a lattice polygon, where all points have integer coordinates...

1. So he says.

Task

Input: an \$n\times2\$ matrix of integers (where \$3\leq n\leq16\$) representing the coordinates of the points of an \$n\$-gon, given in the order in which you would join them up. To be absolutely clear, the first and second values in each of the \$n\$ rows are respectively an \$x\$- and a \$y\$-coordinate.


If it would be far more natural to take something other than a 2D matrix in your language or it's impossible to take one, you can use something else. Should this happen, please clearly state what you're doing.
\$x\$-coordinates or \$y\$-coordinates may be negative, zero or positive.
The polygon formed by joining up the points in the given order may be convex or concave.
There's no need to consider degenerate polygons.
No input polygon will be self-intersecting, thank goodness.


Output: two numbers of any numeric type, respectively representing the \$x\$-coordinate and \$y\$-coordinate of a point within the polygon.


No, your numbers needn't be integers.
Your output needn't be consistent for any single input. You're allowed to generate an output in any valid way that shortens your code.
Corners and edge points are forbidden. Sorry.


Example 1

Input:

0 0
3 0
3 4


Possible output: 1 1

Example 2

Input:

-3 -1
0 1
-1 -1
-1 0


Possible output: -0.31416 0.42

Remarks


This is code-golf, so fewest bytes wins.
The random tag is here only to be on the safe side. I expect that not every answer will use randomness.
Standard rules, I/O rules and loophole rules apply.
If possible, link an online demo of your code.
Please explain your code.
Python 3.8, 116 110 bytes

lambda p:[x:=min(p)[0]+.1,sum(sorted(b+(d-b)*(x-a)/(c-a)for(a,b),(c,d)in zip(p,p[-1:]+p)if(a&lt;x)^(c&lt;x))[:2])/2]

Try it online!
Input: A list of points, each is a tuple of 2 integers.
Output: A point as a list of 2 numbers.
Approach
Draw a vertical line through the polygon. Select the first 2 points where the line intersects with the polygon edges. Any point between those 2 points must be inside the polygon.

Note that the line should be chosen such that it doesn't intersect any polygon vertex.
Code explanation
The x-coordinate of the line is selected as the minimum x of all vertices, plus a small amount (0.1 is used in this case):
x:=min(p)[0]+.1

This ensures that the line intersects the polygon, and that it doesn't pass through any vertex (since vertices all have integer coordinates).
For each edge through vertices \$(a,b)\$ and \$(c,d)\$, the line intersects the edge if \$a&lt;x&lt;c\$ or \$a&gt;x&gt;c\$. Golfed using xor trick:
if (a&lt;x)^(b&lt;x)

The y-coordinate of each intersection is calculated using the following formula:
$$\frac{y-b}{x-a}=\frac{d-b}{c-a}$$
or b+(d-b)*(x-a)/(c-a)
The y-coordinate of the final point is calculated as the average of the smallest 2 y-coordinates.