Your goal is to make this 2D framework rigid. Using mouse clicks, buttons, or key presses for controls, whichever works for you.
Toggle brace/unbrace: click mouse | (return) button | (return) key
To choose rhombus: click mouse | (q)/(w) buttons | (q)/(w) keys
Toggle shift/brace mode: N/A | (v) button | (v) key
To choose ribbons: N/A | (q)/(w) buttons | (q)/(w) keys
To shift along ribbon: N/A | (<)/(>) buttons | (<)/(>) keys
Use the controls to brace just enough faces (black rhombi) so that when the carpet is shifted along every ribbon (blue threads), it rotates rigidly. The game will notify you when your carpet is rigid. You can cheat with the (Check Rigidity) button.
The graph (on the right) represents the intersections between ribbons. Each vertex corresponds to a ribbon. The edges connecting two vertices represents the intersection of those two ribbons. When the face at an intersection is braced, the edge in the graph representing that intersection turns red. The carpet is rigid when the Wester Graph (red) is connected and spanning.