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
For notation, we could define a function that represents the circle:
Let’s compare this function with the parametric circle function on the previous page:
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:
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:
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