How do I make a vector from a vertex position?

MAXScript Frequently Asked Questions

A user asked:

1. How to make a vector from a vertex position?

2. How to make a vector from two vertex positions?

Answer:

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]:

Vectors_Coordinates.gif

A point with coordinates [20,10,10] would appear like this - let's call it "A":

Vectors_PointA.gif

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:

Vectors_VectorA.gif

Point B with coordinates [-10,30,20] would appear like this:

Vectors_PointB.gif

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:

Vectors_VectorB.gif

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:

Vectors_VectorB-A.gif

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:

Vectors_VectorsC.gif

Obviously, the rules of addition and subtraction apply to this set of vectors as you can see from the resulting parallelogram:

Vectors_VectorsABC.gif

Here is the same parallelogram in isometric view in order to show the parallel translation of the vectors:

Vectors_VectorsABC_Iso.gif

As you would expect,

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.

See also

Frequently Asked Questions