[Degrafa] Text Along a Spline

Just wanted to give a sneak preview of my first project for Degrafa.  One of the things we hope to provide in a future release is the ability to path-deform text, both along Bezier curves and in the more general case, a variety of splines.  The algorithm requires an arc length parameterized curve, which includes the Singularity Beziers (quad and cubic), composite Bezier spline, and Catmull-Rom spline.

The following screen shot shows an example with a Catmull-Rom spline.  The default method for initial and terminal points leads to a bit of ‘pinching’ at each end of the spline, so this is not an ideal spline for such an application.  The algorithm works with any spline extending the Composite base class, so this happens to be one of the first test cases.

Text deformed along a Catmull-Rom spline
Text deformed along a Catmull-Rom spline

I’m temporarily drawing tangent and normal in order to verify the orientation.  There are still a lot of details to be worked out, but I wanted to give everyone a preview of just some of the things I’ll be doing for Degrafa.

Good Programmers Into Great Programmers

Interesting article here by Jeff Cogswell, author of ‘Designing Highly Usable Software.’  I particularly liked the point about programmers understanding where things can go wrong.  In my current gig, I receive specs all the time that indicate how something should work and be displayed under average use conditions.  It’s the extreme cases where the UI breaks down or the specification does not work that can kill the product.  Understanding and identifying these cases up front leads to spec modification that saves a lot of downstream headaches and refactoring.

Although the article does not deal with Flash, the principles are still valid.  From your own experience managing or working with great programmers, what do you think makes a really great Flash/Flex programmer?

Prince Speedport Black Team and Flash

I’m really enjoying my new racquet – a Prince 03 Speedport Black Team.  The racket is light and very maneuverable.  Still deciding on the right strings and tension.  I like playing Babolat VS Team 17, but you can only play with gut a limited time in the Texas weather (and I like the 17-gauge strings which wear quicker anyway).

I was initially unaware that you could customize the color of the Speedport string inserts, as shown here,


As I’m still experimenting with strings, different color combinations makes the racquets easy to distinguish (I currently have two), especially if I have both temporarily strung with the same brand but at different tensions. And, it gives the racquet a more personalized touch (other than colored overgrip).

At least I can order the customized inserts (they’re pretty cheap) and have them replaced at the next restringing.

Pretty cool use of Flash on the Prince site 🙂

Joining Degrafa

I started the parameteric curve library back in 2004, with the first TechNote appearing in 2005.  My original goal for this library was to have a code repository to illustrate mathematical concepts discussed in TechNotes.  My strong belief is that fundamental principles of computational geometry should be freely available (with mathematical and code details) to everyone in the Flash/Flex community.  You should never have to buy a book, CD or any other resource to learn how to create and use Bezier curves, splines, etc.  In fact, I maintain that the level of detail in the Singularity parametric curve library and the online TechNotes surpasses that of any Flash book purporting to discuss similar topics, and it’s absolutely free 🙂

In 2007, Singularity was expanded to include another of my favorite topics – kinematics.  A preliminary version of 2D rigging classes was added to the library.  Along the way, Singularity took on a new role as people began using the library in production applications.  Although I don’t mind such use, I never originally intended the library for that purpose and do not want to be in the business of maintaining and supporting a production application library.

There are over a dozen commercial users of Singularity to date and I’ve recently been thinking about the future of the parametric curve library.  Many have suggested the creation of yet another open-source project.  Not a bad idea at all, but there is something lacking.

If I do anything different with this library, it would be expanding its usefulness to people that do not have the mathematical and programming skills to use a low-level computational geometry library. I can create all the Flex demos in the word, but that does not help someone who understands Flex but lacks the mathematical and programming background to use Singularity.

Ah!  Understands Flex … hold that thought for a second.  What if the algorithm technology in the Singularity parametric curve library could be used in a declarative markup environment?  Wouldn’t that be cool?  Hmmm … what existing open-source projects offer such a facility?

Well, I’m happy to announce that I’ll be joining the Degrafa team as a contributor/consultant/general math guy with the goal of helping transition the algorithm technology in Singularity to Degrafa.  This satisfies both my goals of making fundamental algorithm technology freely available to the community and increasing its applicability beyond a relatively small group of programmers.

What this means is that I will no longer be developing application code for the Singularity parametric curve library.  I will be using my spare time to help the Degrafa core team migrate existing code and tecnology to their code base.  I will also devote research time to issues of primary intererest to the Degrafa team and community.  In fact, my current background project that spawned the Spline Tangent series is based on a stated desire from the Degrafa team.

I will continue creating and posting online demos, however, over time you will see most of the computational geometry demos migrate to Degrafa examples.  I will continue to work on the rigging classes and expand the scope of kinematics coverage in Singularity over time.

I think this is an exciting develoment and I look forward to working with the awesome developers on the Degrafa team as well as helping support the incredible community of Degrafa users.