2D Implicit Surface Polygonizer

This program is an implementation of a 2D implicit surface polygonizer. The polygonizer creates a surface boundary from objects defined by implicit field functions. The marching squares algorithm is used to extract the boundary of an isoline. This program supports implicit primitives for circles, lines, and rectangles. Written in Lua and uses the LOVE framework.


The following video shows the program running and the features of the user interface.

User Interface

The graphical interface allows the user to add, move, and change the size of primitives.


Adding Primitives to the Polygonizer

Select the corresponding button to add a point, line, or circle primitive

To add a point, press and release the left mouse button

To add a line or add a rectangle, hold down the left mouse button, drag the mouse, and release.

Move and Change the Size of a Primitive

Enter the Select interface mode to move and change the size of a primitive

To select a primitive, hover over the object with the mouse and press the left mouse button. Alternatively, press the left or right arrow keys to cycle through the primitives.

To remove a primitive, hover over the object with the mouse and press the right mouse button.

To move a primitive, hold down the left mouse button and drag the object to the desired position.

To change the size of a primitive, press the up or down key on the keyboard or scroll the mouse wheel to increase or decrease the size of the object.

Animate the Primitives

Select the Animate interface mode and watch the primitives bounce around the screen.


Windows 32-bit


Linux   - Linux users will need to install the LOVE package (http://love2d.org)

Source: https://github.com/rlguy/2d-polygonizer