1 Sprite and 358 blocks. Not so optimized... I had to remove other shapes because of the difficulty to adapt the code. Explainings: Homothety involves scaling a shape relative to a centre. In this case, the centre is the point of intersection between the lines used to mark the translations. The vector in question is multiplied by the scale factor, and this gives the homothety.
This is an Homothety Engine. It applies homothety to different shapes (here, the square, the circle and the triangle.). You may not understand the code, so I'll explain it. The square just use the position x and y and add or substract the size divided by 2. The circle uses sinus and cosinus. The triangle is a little bit like the circle on one side and the other is the original x position and the y position plus size divided by 2.