Ever tried to tell a computer whether a point is "inside" or "outside" a shape that isn't quite closed? It sounds like a middle school math problem. But in the messy world of 3D scanning and digital design, it’s a total nightmare.
Most 3D models we use today are basically "soup." They have holes. They have weird overlapping bits. Sometimes, they’re just a collection of random points in space. Traditional math breaks when it hits these errors.
That is where the Nicole Feng winding number research comes into play. Specifically, her 2023 paper Winding Numbers on Discrete Surfaces (co-authored with Mark Gillespie and Keenan Crane) changed how we handle geometry that is, frankly, a bit broken.
The Problem With "Inside" and "Outside"
Mathematically, the winding number is an old-school concept. If you draw a loop on a piece of paper, the winding number tells you how many times that loop wraps around a specific point. If it wraps once, the number is 1. If it doesn't wrap at all, it's 0.
But what if your loop isn't a loop? What if there's a gap in the line?
In computer graphics, we use these numbers for "point-in-polygon" tests. This is how a video game knows if your character is standing inside a building or outside in the rain. When you have a perfect, airtight mesh, this is easy. But real-world data is never perfect. Scanned data from a LiDAR sensor or a phone camera often has "topological errors."
Before Nicole Feng's work, we mostly dealt with this in flat, 2D planes or very specific 3D volumes. Transitioning those ideas to complex, curved surfaces—like the sleeve of a jacket or the ear of a digital character—was notoriously glitchy.
How the Nicole Feng Winding Number Solves the "Soup" Problem
Nicole Feng and her team at Carnegie Mellon University took a different approach. Instead of trying to "fix" the broken geometry first (which usually involves a lot of manual cleanup), they looked at the winding number as a solution to a partial differential equation.
The Jump Laplace Equation
Basically, they realized you could treat the winding number as a "harmonic function" that has a specific "jump" across the curve.
Think of it like a staircase. On one side of the line, you're on the ground floor. On the other side, you've jumped up to the second floor. By calculating how these "jumps" behave across a whole surface, the algorithm can figure out what is "inside" even if the boundary is full of holes or self-intersections.
Why This Isn't Just for Math Nerds
You've probably seen the results of this research without knowing it. If you’ve ever used a 3D modeling tool to "bool" two shapes together—basically cutting a hole in one shape using another—you know it fails constantly. You get jagged edges or the whole model disappears.
The "robustness" of the Nicole Feng winding number approach means:
- Faster 3D Printing: You can turn a messy 3D scan into a solid "watertight" object ready for printing without spending hours "healing" the mesh.
- Better VFX: Digital artists can work with "polygon soup" (messy, disconnected geometry) and still have light and shadow behave correctly.
- Robotics: Robots need to know exactly where the boundaries of an object are to grab it. This math helps them "see" solids even when their sensors give them noisy, incomplete data.
The 100x Speedup Secret
Kinda wild thing about this project: after the original paper was published in ACM Transactions on Graphics, they found an even better way to do it.
👉 See also: Why Shark Robot Vacuum for Pets Features Actually Hold Up Against the Hair Piles
Originally, the algorithm relied on a "linear program" to solve the topology, which could be a bit slow on really complex shapes like a donut-shaped (torus) mesh. Later, Nicole Feng noted on her research page that by approximating the solution, they could get a 100x speedup.
That's the difference between waiting for a progress bar and seeing the result instantly.
Real-World Limitations
Honestly, no math is a silver bullet. While the Nicole Feng winding number method is incredibly robust against gaps, it still relies on the "orientation" of the curves. If your input data is so bad that the computer can't tell which way the surface is facing, even the best harmonic function will struggle.
Also, it's computationally heavier than a simple ray-casting test. If you have a perfectly clean, simple box, using a complex winding number algorithm is overkill. It's like using a chainsaw to cut a piece of toast.
Putting It Into Practice
If you're a developer or a researcher looking to implement this, here is the basic workflow Nicole Feng’s research suggests:
- Input the 1-chain: This is your collection of edges or curves, even if they aren't closed.
- Define the Jumps: Set up the constraints where the function must "jump" by an integer value.
- Solve the Poisson Equation: This is the heavy lifting that smooths out the noise and gives you a consistent "inside/outside" field.
- Threshold the Result: Finally, you pick a value to decide where the solid boundary actually sits.
Actionable Next Steps
If you're working in geometry processing or CAD, don't waste time manually stitching vertices on a broken mesh. Instead, look into the Surface Winding Number (SWN) implementations available in libraries like libigl or check out the open-source code provided by the Carnegie Mellon Geometry Collective. Leveraging the "jump harmonic" perspective can save you days of manual cleanup work.
Start by testing the algorithm on your "messiest" models—the ones that usually crash your Boolean operations—to see how it handles the topological noise. Once you see it "close" a hole automatically, you won't want to go back to the old way.