Posted by jihadjihad 6 days ago
This type of content is becoming rarer on the internet nowadays.
[edit] Nevermind. I'm being too harsh. The creator was obviously having fun and being creative. That's cool. I think if nothing else this just proves how jaded and skeptical about clever artwork I've become in the past few years.
Those are just the obvious ones that I can immediately spot — there was probably a lot of careful consideration into the placement of circles in order to facilitate good looking arcs and circles that bring the animals to "life".
What animals cannot be accurately depicted with 13 circles?
A mature house centipede has 15 pairs of legs. You can probably get the point across with a portion of that, and use two parts of a circle for 2 legs.
But not that artsy as the OG.
Circle circles_[13];
}
(1) Listing closed curves by vertices. Each vertex of a painted area is an intersection of two or more circles, and delimits a section of a circle. So the section of circles that enclose a circle can be encoded each by the union of:
(1.1) A circle (index); (1.2) A 2nd circle (index) that intersects the 1st on a first point; (1.3) A bit identifying the (first) intersection (because there may be 2 possible); (1.4) A 3rd circle (index) that intersects the 1st on a second point; (1.5) A bit identifying the (second) intersection.
Note the base circle would be the first intersection of a subsequent section of this closed curve, and the 3rd circle would be the subsequent base circle. So 1/2/3 won't be necessary for subsequent curves. So only (K+2) indices + (K+1) bits are necessary for this encoding.
Total ~K log2(K)+K bits. I hypothesize (left to the reader :)) a closed curve should contain at most 2x13 points. There can be at most 2^13 distinct regions however, so each figure (Animal) can be encoded with less than that many curves per figure. So each figure (Animal) can be encoded with less than 2^13 x 26x(5+1) bits =~ 1.3Mbit.
But that's mostly pathological cases, if each Animal must be a fully connected area, then that might reduce (hypothesis above) to at most only 26x(5+1) bits = 156 bits, or 20 bytes!
I left out a problem which area shapes encoded within each other (like eyes). In that case you need at most another 156 bits per inner cutout shape.
(2) Alternatively, you could use boolean operations to encode each shape. Also left as a fun problem :)
interface Animal {
Circle[13] circles();
// Leftover from Intro to CS, remember to remove
void make_sound();
}