Page 3: Implicit Curves

Spring 2026 Sample Solution

The second type of shape representation we’ll consider are implicit representations. In this type, we will write a different type of function than we did with parametric curves. These implicit functions will be tests that check whether a point is a member of the set or not.

As an example, let’s consider the unit circle. Given a point (x,y), I can check whether the point is on the circle by seeing if the expression

(1)
is true. Notice that to draw the circle, I would need to test many points in space to figure out which ones are part of the circle.

For notation, we could define a function that represents the circle:

(2)
I chose to define f such that it has the value 0 if the point is in the set.

Let’s compare this function with the parametric circle function on the previous page:

(3)

Notice that the implicit function is a scalar function (it gives a number) that takes a vector (a position) as its input. In contrast, the parametric function takes a scalar as input (the free parameter value) and produces a point position.

For drawing, parametric curves are much easier: we simply plug in a bunch of parameter values. In contrast, drawing an implicit curve is tricky: we have to search for points where the function has a zero value. Indeed, if we just want to draw curves, we rarely use implicit representations.

What can you do with implicit representations?

One advantage of an implicit representation is that, if our goal is to test points, then it works perfectly.

Another trick: if we define the function correctly, it can have other useful properties. For example, if I define my circle as:

(4)
my test becomes more useful. Not only does it tell me whether or not the point is on the circle (if the function is zero), it tells me how far it is from the circle. I can quickly check to see if the point is inside the space bounded by the circle (if the value is less than zero).

This type of function is called a signed distance function or SDF. For complex shapes, they need to be constructed carefully.

Another advantage of implicit representations is that they can combine easily to make more complex shapes. This requires defining functions in a special way so they combine nicely.

Here is a demo that an AI (Gemini) wrote for me. It used this function to define the circle:

(5)
This function is sometimes called the “metaball” or “blob” function. It has some nice mathematical properties in that it is (nearly) zero any place away from the circle. That way, we can add different circles together and they combine nicely. The actual curve is defined in places where the function has a value close to 1.

This demo shows two circles (move your mouse inside the canvas - the second circle follows the mouse). The function adds the two circles. Notice what happens when the circles get close to each other: they “merge” into a “blobby” (but smooth) shape.

Even though this demo is simple, you can see how implicit functions can be combined by adding, and how this allows the topology to change.

Under the hood… you can sort of see how implicit surfaces are drawn. The program tries every pixel in the canvas (it actually does every other pixel, which is why you see distinct dots). If the function has a value close to the “critical value” 1, it gets colored. Because it’s unlikely that the center of the pixel has the exact value, it uses a tolerance (.1), which is why the curve looks “thicker” in some cases.

There are much fancier ways to draw implicit surfaces - but this is extremely simple.

Implicit representations are rarely used for 2D curves. But they are important in 3D.

Next: Page  4 - Subdivision Curves