People have been asking me if I'm doing a completely new piece of software and new studies/researches for 3D tasks.
Well ... the answer is "yes and no". It sounds strange, but I will explain.
I'm really doing new libraries regarding source code. Despite in a Math sense a lot of 2D operations and transformations are just a special (simpler) case of 3D ones, the 2D implementation shouldn't pay the overhead of a 3D (more complex) one.
Anyway, after some more time, it will bring other good consequences. Usually, to be really flexible, 3D rendering software need a very modularized project, usually not needed in 2D rendering software. Being clearer: every software should have modularization and encapsulation (preferably in a object-oriented meaning), but it's a good idea take this to extreme in 3D projects. So, if you can, don't mix 2D and 3D libraries.
Just in a software sense, I'm creating new libraries. But, considering all of this in a Math sense, things are not so disjoint. If you understand and know how to implement math in 2D world, usually you are able to generalize it for 3 (or more) dimensions without study a lot.
Even separated in different source files or so, 2D and 3D libraries can be very related concerning analytic geometry and vector calculus.