Hello!
There are a few ways you can do this! Its a great problem.
You need to read up on polar coordinate system.
something that you can use is this modPolar function from mercury.sexy/hg_sdf
// Repeat around the origin by a fixed angle.
// For easier use, num of repetitions is use to specify the angle.
float pModPolar(inout vec2 p, float repetitions) {
float angle = 2*(3.14152)/repetitions;
float a = atan(p.y, p.x) + angle/2.;
float r = length(p);
float c = floor(a/angle);
a = mod(a,angle) - angle/2.;
p = vec2(cos(a), sin(a))*r;
// For an odd number of repetitions, fix cell index of the cell in -x direction
// (cell index would be e.g. -5 and 5 in the two halves of the cell):
if (abs(c) >= (repetitions/2)) c = abs(c);
return c;
}
What this does is it repeats a section of space around a center, creating a kaleidoscope effect. It returns a number unique to the slice, so you can use that to change the color of the circle.
You will have to find where to offset the circle so it can show up in the reflection.
Hopefully you can find this helpful!