I've been trying to grasp this concept but it's proving a bit hard. During development of my math bits I got used to this:
1) [x,y,z,1] is a "point" which can be transformed in any way by matrix multiplication. It is subject to translations, rotations, etc.
2) [x,y,z,0] is a "vector". Apart from being invariant to translations (ie. you can't "move" it) it works the same as (1). Normals face the same way no matter where they are so this would be a normal typically.
Logically speaking I'm fine at the moment. But I want to merge these structures so I thought about going with a general 4D vector. I've read through wikipedia and a bunch of other sites but I have some logical problems.
A) For example adding a vector to a point yields:
[px,py,pz,1] + [vx,vy,vz,0] = [vx,vy,vz,0]
So moving a point along a vector yields the vector...?
B) Also implementing the general formula (same page, scalars ignored):
[Xa,Ya,Za,Wa] + [Xb,Yb,Zb,Wb] = [WbXa + WaXb, WbYa + WaYb, WbZa + WaZb, WaWb]
gives [0,0,0,0] for ANY two vectors (Wa=Wb=0). Instead it should be [Xa+Xb, Ya+Yb, Za+Zb, 0] which on the other hand doesn't fit into the general formula IMHO.
Anyone been dealing with this? There's a good chance I got it all wrong so a kick in the teeth might be appreciated aswell :-D