MAXScript FAQ > Working With Vectors > How do I make a vector from a vertex position? |
A vertex position IS a vector!
Any Point3 value is a vector with origin at the world origin [0,0,0] pointing at the Point3 value consisting of the X, Y and Z coordinates of the vertex.
On the image below, you can see a graphical representation of the 3ds Max world coordinate system with its X, Y and Z axes crossing at the Origin [0,0,0]:
A point with coordinates [20,10,10] would appear like this - let's call it "A":
The Point3 value [20,10,10] defines a vector with starting point at the origin [0,0,0] and ending point at A. The length of the vector is equal to the distance between the origin and A, and the direction is from the origin to A:
Point B with coordinates [-10,30,20] would appear like this:
The Point3 value [-10,30,20] defines a second vector with starting point at the origin [0,0,0] and ending point at B. The length of the vector is equal to the distance between the origin and B, and the direction is from the origin to B:
Now if you want to calculate the vector defined by the two points, you have to simply subtract the starting point from the end point. So a vector starting at A and pointing at B with length equal to the distance between the two points can be calculated as B-A:
The resulting Point3 value C = B-A is a vector expressed just like A and B with starting point at the origin [0,0,0] and ending point the point C with coordinates the result of ([-10,30,20] - [20,10,10] ) which in turn is equal to [-10-20, 30-10, 20-10] which is finally equal to [-30,20,10]. Note that the vector C has exactly the same length and direction as B-A, it is just translated in parallel along the vector -A so its start matches the origin:
Obviously, the rules of addition and subtraction apply to this set of vectors as you can see from the resulting parallelogram:
Here is the same parallelogram in isometric view in order to show the parallel translation of the vectors:
C = B-A (same vector, just translated to the origin)
A = B-C (same vector, just translated to the origin)
B is obviously equal to the sum of the vectors (B-A) and A. This can be expressed as (B-A)+A or B+(A-A). Since A-A returns a zero vector without length and direction, the result is B itself.
Same with the sum of (B-C) and C which can be written as B+(C-C). Since C-C returns a zero vector, the result is B itself.
This shows that the sum of two vectors can be calculated by starting each new vector at the end of the previous one. The sum would be a vector starting at the beginning of the first operand and ending at the end of the last operand.