Shapes could be defined by an inequality, for example simple shapes could be defined as follows:
Sphere
boolean isInside(float x, float y, float z) {return (r*r < x*x+y*y+z*z);}Cube
Boolean isInside(float x, float y, float z) {return ((x<left) & (x>right) & (y<top) & (y>bottom) & (z<front) & (z>back));}Other shapes
Other shapes could be made by combining these simple shapes using Boolean operations, for example a Boolean 'or' will create a new shape with an outline covering both shapes. A Boolean 'and' will create a shape with an outline which is the intersection of both shapes. An 'not and' would allow a 'bite' to be taken out of an object in the shape of the other object.Movement
You could offset or move the object with the following type of method: (see Using this to model physics)
Boolean isInside(float x, float y, float z) {return shapeToBeMoved.isInside(x+xOffset, y+yOffset, z+zOffset);}Uses of this method
Parameterisation