Simulation

The simulation was done in two dimensions under the assumption that in reality, swiveling a block will cause all the blocks being moved to move into the third dimension and thus avoid any collisions with non-moving blocks. 

In the simulation, there are three types of blocks: normal, swivel and electromagnetic.

Type

Symbol

Description

Normal

This block has permanent magnets on every side and cannot perform any swiveling

Swivel

or

This block is composed of permanent magnets on every side and has two possible orientations. In either orientation, the white line represents the cut in the block that allows it to swivel. Thus, the axis of rotation is perpendicular to the white line. For example, in the first orientation, a swivel will cause the upper face to swap with the right face.

Electromagnetic

This block has electromagnets on every side and cannot perform any swiveling. The electromagnets allow it to connect and disconnect with any block. Any instance of these blocks that is moved during some swivel is considered an “end-effector”.

The main motion in the simulation is the swivel. When a swivel block receives the command to swivel, it first decides which side will be the anchor and which side will move the blocks attached to it. The anchor is the side attached, either directly or through a chain, to the oldest block in the structure. Older blocks were placed into the simulation earlier than younger blocks. The older block is the anchor because I am assuming that when the models are physically created, they will be anchored securely to a substrate at the first block so that there is a single source of power. Once the anchor is determined, then the blocks attached to the other side of the swivel block are reflected across the swivel block’s axis of rotation.

A swivel is aborted if there is a chain of blocks that cause both sides of the swivel block to be connected, or if by doing the swivel, a new connection is created in the model. Moving a block to a location adjacent to a non-moving block creates this connection.

Project by Mark Desnoyer '06