Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Processing beinhaltet eine Vektor Klasse ‘PVector‘. PVector kann 2 oder 3 Dimensional sein.Vectors are an extremely useful geometric object in maths and physics. Vectors express a direction and a magnitude (or length), in both 2D and 3D space. Vectors are key concept not only for producing geometry and form through code, but also for motion and interactive animation. 

(Diagram 1.  Euclidean vector)

 

 

Vectors are normally represented as an arrow, where the length expresses the magnitude. The information to create a 2D vector can be easily recorded with just two numbers, which can be negative or positive.

a = ( 4, 8 )  

(Diagram 2.  vector a)

 

Vectors represent direction and magnitude without a location. For this reason vectors are often combined with a coordinate. Confusingly, 2D coordinates are also recorded in the same way as vectors, with just two numbers. However, coordinates are normally represented as point.  

 

(Diagram 3.  vector with a with coordinate, and a point b)

 

There are a number of ways to manipulate vectors with simple operations (vector maths).

Addition

If you add to vectors together, the resulting vector is the equivalent of stacking the vectors end to end.

a = ( 4, 8 )  

b = ( 6, -3 )

a + b = (10, 5)

(Diagram 4.  vector addition)

Multiplication

Multiplication only effects the magnitude of the vector, leaving the direction unchanged... However, if the vector is multiplied by a negative, then the direction is reversed and the magnitude is unchanged.  

 

(Diagram 4.  vector multiplication)

 

(Diagram 5.  vector negative multiplication)

Subtraction

 

Finding the magnitude

You can find the magnitude with this formula. You might notice that this is the same formula for finding the length between two points.

(Diagram 6.  sqrt(x^2 + y^2))

 

PVector

Processing has a vector class called ‘PVector‘, which can be two or three dimensions.

 

Code Block
PVector vec1 = new PVector(1,2);
PVector vec2 = new PVector(3,4);
 
println(vec1.x);
println(vec1.y);
println(vec1.z);
 
println(vec1);
println(vec2);
 
vec1.set(10,20);
println(vec1);
 
println("-- Vec Add --");
PVector resVec = PVector.add(vec1,vec2);
println(resVec);
 
vec1.add(vec2);
println(vec1);
 
println("-- Vec Sub --");
resVec = PVector.sub(vec1,vec2);
println(resVec);
 
vec1.sub(vec2);
println(vec1);
 
println("-- Vec Mult --");
resVec = PVector.mult(vec1,2);
println(resVec);
 
vec1.mult(2);
println(vec1);
 
println("-- Vec Length --");
println(vec1.mag());
 
println("-- Vec Angle Between --");
println(degrees(PVector.angleBetween(vec1, vec2)));
 
println("-- Vec Normalize --");
vec1.normalize();
println(vec1);
println(vec1.mag());