superMORPH uses the mathematical superformula to generate 3D supershapes whose parameters are driven through a user’s input using a Kinect.

# Superformula

# Where 'theta' is equal to a given pole in 2D space

r = (((1 / a) * cos (m1 / 4) * theta) ^ n2 + ((1 / b) * sin (m2 / 4 * theta)) ^ n3) ^ -1 / n1

# Extended to 3D

r1 = r where 'theta' is equal to a given longitudinal point

r2 = r where 'theta' is equal to a given latitudinal point

# For each point in 3D space

x = radius * r1 * cos(longitude point) * r2 * cos(latitude point)

y = radius * r1 * sin(longitude point) * r2 * cos(latitude point)

z = radius * r2 * sin(latitude point)

# Where 'theta' is equal to a given pole in 2D space

r = (((1 / a) * cos (m1 / 4) * theta) ^ n2 + ((1 / b) * sin (m2 / 4 * theta)) ^ n3) ^ -1 / n1

# Extended to 3D

r1 = r where 'theta' is equal to a given longitudinal point

r2 = r where 'theta' is equal to a given latitudinal point

# For each point in 3D space

x = radius * r1 * cos(longitude point) * r2 * cos(latitude point)

y = radius * r1 * sin(longitude point) * r2 * cos(latitude point)

z = radius * r2 * sin(latitude point)

SuperMORPH uses the Kinect's depth sensor to gather data regarding the user's width, height, distance, and joint coordinates, using a combination of KinectPV2, a library to interface Kinect with Processing(Java).

The superhsape acts as a mathematical representation of the human body in its current state.

This data is normalized to reduce the jittery input, and then used to drive the parameters of the superformula, changing the supershape's structure and appearance. Users can also rotate and zoom the camera by closing their hands and dragging.