The \$n\$-ellipse is a generalization of the ellipse with possibly more than two foci. Specifically, given \$n\$ points on the plane, called foci, the \$n\$-ellipse is the set of points of the plane whose sum of distances to the \$n\$ foci is equal to a constant \$t\$.
This challenge is about plotting the \$n\$-ellipse together with its interior; that is, the set of points whose sum of distances to the \$n\$ foci is less than or equal to equal to \$t\$. Note that the resulting set is always convex.
To simplify, only points with integer coordinates need to be considered.
- Number of points \$n\$: positive integer;
- List of \$n\$ foci (possibly repeated) with integer coordinates, \$(x_1, y_1)\$, ..., \$(x_n, y_n)\$;
- Threshold \$t\$: positive integer.
An image representing all points \$P\$ with integer coordinates such the sum of Euclidean distances from \$P\$ to the \$n\$ foci is less than or equal to \$t\$.
Each pixel in the image should correspond to a point with integer coordinates; that is, pixel size is \$1 \times 1\$. Alternatively, you can use a finer resolution (smaller pixels), or vector graphics.
The image should consistently use two different colours for points satisfying the condition ("active" pixels) or not satisfying it ("inactive").
Graphical output is required, in any format. (ASCII art is not allowed because of size limitations and aspect ratio).
Both axes should have the same scale. The \$x\$ axis should be horizontal, and can consistently increase left to right or right to left. Similarly, the \$y\$ axis should be vertical and can consistently increase upwards or downwards.
Axis labels, auxiliary grid lines and similar elements are allowed.
The output image can have an arbitrarily large "frame" of inactive pixels around the set of active pixels.
The set of active points is guaranteed to be non-empty.
The code should work in theory for inputs containing arbitrarily large numbers. In practice, it is acceptable if the program is limited by time, memory or data-type restrictions.
Shortest code in bytes wins.
Input is shown as a list of \$n\$ foci defined as coordinate pairs, followed by \$t\$, and an optional comment.
In the output images, \$x\$ axis increases left to right, \$y\$ axis increases upwards.
(5,8), 100 % A circle
(0,0), (70, 150), 220 % An ellipse
(-100, 0), (100, 0), (100, 0), 480 % Repeated point
(-90, -90), (-90, 90), (90, -90), (90, 90), (90, -90), 670 % Repeated; arbitrary order
(200, 600), (320, -60), (-350, 220), (-410, 130), (40, -140), 2100
(-250, -250), (-250, 250), (250, -250), 1000
(-250, -250), (-250, 250), (250, -250), 1200
(-390, 0), (-130, 120), (130, -120), (390, 0), 1180 % Finally, a pair of lips?