Diary #7: Progress with itkQuadEdgeMesh; Pair programming

If there is one thing that ITK is good at, it definitely is *not* writing good documentation. I have been piecing together the different method calls necessary to perform the basic iterations and traversals on `itkQuadEdgeMesh`, which is ITK’s data structure for representing 2-manifolds.

If you’ve done a little mesh work, you’re probably familiar with CGAL’s `Polyhedron_3` data structure, but if not, at least you have a nice documentation page that does a good job about teaching you the interface of the underlying halfedge data structure, and by the end of it, you know the name of the game and even have some example code to go off on. But don’t take my word for it, see it for yourself: http://doc.cgal.org/latest/Polyhedron/classCGAL_1_1Polyhedron__3.html

On the other hand, take a glance at the documentation for the quadedge data structure in ITK: http://www.itk.org/Doxygen/html/classitk_1_1QuadEdgeMesh.html

At a first glance, things are not promising. If you’ll notice, though, you’ll see the link to a PDF article that gives an overview of the data structure and actually does a great job about it. However, the article was written at the time the data structure was initially submitted for inclusion in ITK, and so the code snippets don’t reflect the current API, which doesn’t help someone who wants to get up and running with it.

You might also be in the know and realize that ITK might have code examples on its wiki. Sadly, the few examples that actually deal with the quadedge mesh don’t really demonstrate the basics of its usage.

In spite of all of this, I’ve been able to throw together some example code that I will write up in a nice tutorial, putting it side by side with the CGAL halfedge data structure. This is one small step in the direction of developing ITK branch of my project. I’ll switch over to the other branch tomorrow and see about making forward progress with research now that I’ve been able to scratch this itch.

In other news, I did some pair programming with Carlos finally. We got some good progress going with implementing the modified method we went over during the weekend. I think it was really productive. It’s really nice to work things out together on the board and also switch off on the computer. There were also moments where we just disagree and stop, and that’s important, too.

I think this involvement is important, and I want to do my best to encourage it. Not just between coders like Carlos/me, but between coders and end users, for example.