Raven August 24, 1999, 12:40 AM 

Mathematical perspective:
Computer graphics by defenition exist in a VECTOR space. In a vector space all points are considered vectors from the origin. There is NO SUCH THING as a point in linear algebra. Therefore there isn't any destinction between a vertex and a vector. A vertex has color and texture coordinates so its basically a vector that exists in 3 spaces(world, texture, color). That is the only difference. I would point out to you that matrix transformations on anything but vectors do not exist. This sounds strange but if you consider that a vector is a 1 covariant(or contravariant, depends whether its row or column) tensor and a matrix is a 1 covariant and 1 contravariant tensor it makes sense. Tensors, since they are invariant in any coordinate system(such as a linear transform, ie a matrix!) have basis vectors attached to them, though this is implicit in most 3D engines, they just dont worry about it. Therefore tensors only exist in vector spaces. Since a point is not vector space dependant it is not a tensor. There is no multiplication sense between a point and a tensor(even a 2 valence, ie matrix). Since you can multiply anything by a matrix in a 3D engine everything is in vector space. And mathematically therefore there is no distinction between a vector and a vertex. And since nothing else except math exists, like mister Einstein pointed out, this is true. One other note: vertex normals are not real. They are a representation of the surface normal at that point to the true curvature of the object, which is not always desirable by the way. They are stored in the vertex structure because of convenience but are IN NO WAY affiliated with the vertex. A normal to a vector is an oxymoron:)
As to the engine point of view, I use a separate vertex structure with some elaboration on texture coords since you need multiple passes, and a separate vector structure. I cant see how you can reuse the vector in the vertex for serious code, since what happens to a vector is very different than a vertex. The vertices are the ones that get rendered, so if you write say a separate driver that you can change to implement another graphics api(i do this) you need a distinct vertex structure to communicate with it. The main reasons are mostly program related and not mathematic though. There isnt that big a distinction between them except that the vertex exists in 3 spaces instead of 1, all of different dimensions(color is 4rgba, and texture is 2st, and world is 3xyz and a homogenius so 3.5 i guess...), though it's still basically a vector. It depends on how you want to structure your stuff. Just one note on this: whatever the structure, do it well! Well, no sh*t sherlock:)
Hope this clarifies things,  Raven
