grantwilliams said:
Yes I was referring to 2D/3D Math/Physics/Engineering vectors. Is there a book I could read about how vectors can be implemented in C++?
I am starting research and using computation to solve problems and I sort of understand how I could implement vectors in C++, but I would love to be able to really learn them and establish a nice foundation for the computation I will be doing later.
There are tonnes of books talking about implementing vector libraries including a lot of game design books, computer graphics books, and computational science/engineering books.
As I said before though, a lot of free implementations can be found online already.
All the open-source game engines, visualization and rendering platforms, computational science and engineering packages, and others have classes for vectors and matrices with a wide range of features and optimizations relevant to that particular platform.
Game engines and high performance platforms will have for example, code with assembly routines for matrix multiplication because games have to do tonnes of these operations every frame so they need to have optimized code.
The OGRE library is a large open source game engine that will have these as well Irrlicht which is another open source game engine.
The Intel website has PDF's for optimized matrix multiplication in SSE and SSE2 for various common matrix sizes (3x3 up to 6x6).
I would personally figure out some of your requirements first with regards to features and performance characteristics and then search for a few implementations: I have given two suggestions and the code in OGRE should be very well developed for those libraries.
There are tonnes of open source repositories with matrix and vector routines but what I recommend is that you get one from a very large complex project and the reason is that they will have included the features in their classes that are required to do the breadth of things that the platform needs to do, and game engines need to do a lot of stuff.
If someone writes a stand-alone piece of code simply as an exercise and is used only in isolation, then it won't have this.
It's not to say that all individual submissions are in isolation and are purely theoretical exercises: a lot of submissions are just a few files from a massive project but if you have the entire project, then you can at least see how a particular class supports the rest of the platform.
Here is the link:
http://www.ogre3d.org/