Almost trivial, if you're prepared to make the mirrors a bit bigger. I've got a 7-element array on my workbench right now. You want two servos per mirror, one for each axis. I'm using flexures for linkages between the servos and the mirrors, and universal joints made of magnets and ball bearings to hold everything together. The mirror tiles I'm using are 110mm across, flat-to-flat, which are bigger than this example, and that makes layout and assembly straightforward in a way that it wouldn't be if everything was smaller. Everything's printed in PETG, raspberry pi pico for brains driving a pca9685 PWM driver over i2c. The linkage geometry is the only hard part, the CAD and printing was pretty much a one-weekend project.
Should probably point out that with 2 servos per mirror you can match surface normals but not surface offsets. You can make each individual mirror match the gradient of a curve, but you can't make a curve like the parabolic dish in the GitHub link without a third servo per mirror. I'm waiting for more parts to arrive for that...
This is quite a bit different. DLP like projectors are binary: straight forward or somewhere away. The layout of the grid of mirrors matches the layout of the dots you can illuminate, in the image. Something like OP has would require some pretty serious angular precision.
I think the beautify of the mirror system is that it's direct, understandable/observable, and nice to look at by itself, even if it's not showing an image. It's elegant. If you use beam formers and DLPs, you're just making an overcomplicated DLP projector that's going to look like an overcomplicated DLP projector.
https://www.youtube.com/watch?v=WwCmzwSE98o&list=RDCMUCUbDcU... I don't know if you would need a server for each mirror? but you would need.... two axis of rotation? and making a mechanical system that slowly moved mirror by mirror to update the position might be more complex.