Okay, now that we are all excited about making a 3D graphics engine, where do we start? Well, the first thing that we need is to be able to position our objects in the virtual world. If we don't know where things are, we will not be able to draw them. We will use the Cartesian coordinate system to describe positions in space. The Cartesian coordinate system is your standard X,Y,Z system (Shown in the image to the Right). It consists of three axises (shown in green), all perpendicular to each other. To specify a point in three space, you must specify three coordinates, the X,Y and Z coordinates. The Origin (O) of the coordinate system is special, it has coordinates (0,0,0). Each of the coordinates measure a distance parrellel to their respective axis from the origin to the point. The yellow tick marks on the diagram show a general idea, these are measured axises. You can measure along each axis a specified number of units to get to where you are going. Because each of the axis is perpendicular to each other, you can specify each 3D point with one unique coordinate triple. Each point has one and only one coordinate.

To the right is one example, the red point. As you can see, it is located at point (3,3,0). This means that is is three units along the X axis, three units along the Y axis, and zero units along the Z axis. The orange arrow shows an alternative notation that is will be useful soon. It is vector notation. Instead of thinking of the point as a point, we think of it as a position vector. In practice, both are stored as (X,Y,Z) coordinates, but using vector ideas will make future ideas easier to understand.

Before we dive into vector manipulations, we need some notation to deal with them. Here is how we will define a vector:
This shows that each vector has three components, seperated by commas. Notice that there is a difference between vector and scalar numbers. A scalar number is just a number, such as 1 or 5 or 10.2. A vector is a three dimensional object. To describe a vector requires the three scalar values: X, Y, and Z.
The main purpose of this article is to familiarize you with vectors and manipulations applicable to them. In the next article, we will start off with this foundational knowledge and start coding. Before we can really understand what is going on though, we must know the basics. Here are the main manipulations that we will want to do to vectors:
From here, three dimensions is an easy extension, just add an extra term:
Dot Product: