<p>Here's the simple answer.</p>

<p>In 4D, to be able to multiply them by a 4x4 matrix, vectors are represented as (x,y,z,0) and points are represented as (x,y,z,1).</p>

<p>Since the 4th row of a 4x4 matrix represents the translation of the matrix, the above representations make it so points are affected by translation, but vectors are not.</p>

<p>Both vectors and points are affected by the rotation, scaling, etc though.</p>

<p><strong>Caveat:</strong></p>

<p>There is deeper discussion to be had if you expect the vectors to have certain properties.  For instance, if you transform a triangle's normal by the same matrix you transform the triangle's vertices, it likely won't actually be the normal vector of that triangle anymore. This is because normal vectors have a sort of inverse relationship to the vertices that they are calculated from.</p>

CC BY-SA 3.0
2016-11-24T13:14:12.800Z
Normals don't work because they're not vectors.  Don't know of a good intro to the concept though.
MB Reynolds
CC BY-SA 3.0
2017-01-18T13:55:49.310Z
surface normals are bivectors, not vectors.  We can find a normal by the cross product of two vectors, the result is a bivector.  SEE Per Vogensen's: https://gist.github.com/pervognsen/c6b1d19754c2e8a38b10886b63d7bf2d
MB Reynolds
CC BY-SA 3.0
2016-11-19T15:58:57.973Z
2016-11-24T15:14:13.447Z
2016-11-24T15:14:13.447Z
Alan Wolfe
<p>If you would look up the definition of a vector and a point, then a vector is:</p>

<blockquote>
  <p>A quantity, such as velocity, completely specified by a magnitude and a direction.
  <a href="http://www.thefreedictionary.com/vector" rel="nofollow noreferrer">http://www.thefreedictionary.com/vector</a></p>
</blockquote>

<p>And a point is:</p>

<blockquote>
  <p>A dimensionless geometric object having no properties except location.
  <a href="http://www.thefreedictionary.com/point" rel="nofollow noreferrer">http://www.thefreedictionary.com/point</a></p>
</blockquote>

<p>So you could say that a vector is a direction with scale, and a point is a location.</p>

<p>So, if you transform a vector you just rotate and scale it. With a point you also translate it (the rotation and scaling of a point is around the origin, since it iss just a location the point itself cannot be rotated).</p>

<p>Most of the times a vector and a point are put into the same container, a vector with 4 components. The only difference is the w component. If the w component is 0, then it is a direction. If it is 1 then the vector is a point.</p>

<p>The reason for this can be found in the matrix itself.
It makes use of the way you multiply a vector with 4 components with a 4x4 matrix. If you do not know how that works, I would suggest a quick google.</p>

<p>Most of the times you use a 4x4 matrix. A normal transformation matrix could look like this:
\begin{bmatrix}rot+scale&amp;rot+scale&amp;rot+scale&amp;translation\\rot+scale&amp;rot+scale&amp;rot+scale&amp;translation\\rot+scale&amp;rot+scale&amp;rot+scale&amp;translation\\0&amp;0&amp;0&amp;1\end{bmatrix}
(The rotation and scale are put in the 3x3 area you could say, so for just rotation and scale a 3x3 matrix could also be used, but when translation comes in, we need that 4th column.)</p>

<p>As you can see, if the last component is 0, then you have a multiplication with 0 and therefore the result is 0 and there is no translation.</p>

<p>This makes it easy in computer graphics with polygonal objects. You have the same transformation matrix to transform the positions but also the normals. Because the normals have their w component set to 0 and the positions' w component is 1, the normals are just rotated (and also scaled which can lead to some weird stuff, so most of the times the normal is normalized after. It isn't actually recommended to use the same matrix for positions and rotations because of the weird stuff! Look at @JarkkoL 's comment.) and the positions are translated (and rotated and scaled around the origin).</p>

<p>Hope I did not make a mistake :P, and this helped you!</p>

CC BY-SA 3.0
2016-11-19T21:37:13.017Z
Normals are not transformed with the same transformation matrix as positions. You need to calculate inverse of the transpose of the 3x3 sub-matrix to properly transform normals for transformations with non-uniform scaling and/or skewing.
JarkkoL
CC BY-SA 3.0
2016-11-19T21:54:07.537Z
@JarkkoL yeah that is true, you are right with that. It is best to not use the same matrix, but depending on the implementation, it is done. Most of the times people do not care about the skewing of the normals that much, because they either do not use non-uniform scaling or scaling at all. That part about transforming positions and normals was more about that it could be useful to use one container.
bram0101
CC BY-SA 4.0
2023-03-08T17:38:19.330Z
super late to the party but... what if you have vertex positions of an object in its own local frame, and want to rotate the object. it would seem that representing the vertex positions as locations would make them un-rotatable, so the correct representation would actually be vectors (direction + scale)?
Nevermore
CC BY-SA 3.0
2016-11-19T12:22:50.717Z
2016-11-19T21:56:17.950Z
2016-11-19T21:56:17.950Z
bram0101
<p>This is what my lecturer told me in the coursework:</p>

<p>We only consider 4*4 matrices. These are used to rotate, scale or translate objects (or any combination of these operations). Matrices are also used later in the implementation of the virtual camera model. If you do not know the difference between a vector transformation and point transformation, look it up. </p>

<p>I can't seem to find an answer and made an account for this website just for this question.</p>

CC BY-SA 3.0
2017-01-20T11:49:26.210Z
In complement to all the other answers and because other people already answered this question in length elsewhere you can check:

https://www.scratchapixel.com/lessons/mathematics-physics-for-computer-graphics/geometry/transforming-points-and-vectors
user18490
<vectors>
What is the difference between a point transformation and a vector transformation?
S.A
# What is the difference between a point transformation and a vector transformation?

(Asked by: username_0 on 2016-11-19)

This is what my lecturer told me in the coursework:

We only consider 4\*4 matrices. These are used to rotate, scale or translate objects (or any combination of these operations). Matrices are also used later in the implementation of the virtual camera model. If you do not know the difference between a vector transformation and point transformation, look it up.

I can't seem to find an answer and made an account for this website just for this question.

**Tags:** vectors

> **Comments:**
> **username_1**: In complement to all the other answers and because other people already answered this question in length elsewhere you can check:  https://www.scratchapixel.com/lessons/mathematics-physics-for-computer-graphics/geometry/transforming-points-and-vectors  

---

## 2 answers

### Answer by username_2 on 2016-11-19. Score: 9

Here's the simple answer.

In 4D, to be able to multiply them by a 4x4 matrix, vectors are represented as (x,y,z,0) and points are represented as (x,y,z,1).

Since the 4th row of a 4x4 matrix represents the translation of the matrix, the above representations make it so points are affected by translation, but vectors are not.

Both vectors and points are affected by the rotation, scaling, etc though.

**Caveat:**

There is deeper discussion to be had if you expect the vectors to have certain properties. For instance, if you transform a triangle's normal by the same matrix you transform the triangle's vertices, it likely won't actually be the normal vector of that triangle anymore. This is because normal vectors have a sort of inverse relationship to the vertices that they are calculated from.

> **Comments:**
> **username_3**: Normals don't work because they're not vectors.  Don't know of a good intro to the concept though.  
> **username_3**: surface normals are bivectors, not vectors.  We can find a normal by the cross product of two vectors, the result is a bivector.  SEE Per Vogensen's: https://gist.github.com/pervognsen/c6b1d19754c2e8a38b10886b63d7bf2d  

---

### Answer by username_4 on 2016-11-19. Score: 2

If you would look up the definition of a vector and a point, then a vector is:

> A quantity, such as velocity, completely specified by a magnitude and a direction.
> <http://www.thefreedictionary.com/vector>

And a point is:

> A dimensionless geometric object having no properties except location.
> <http://www.thefreedictionary.com/point>

So you could say that a vector is a direction with scale, and a point is a location.

So, if you transform a vector you just rotate and scale it. With a point you also translate it (the rotation and scaling of a point is around the origin, since it iss just a location the point itself cannot be rotated).

Most of the times a vector and a point are put into the same container, a vector with 4 components. The only difference is the w component. If the w component is 0, then it is a direction. If it is 1 then the vector is a point.

The reason for this can be found in the matrix itself.
It makes use of the way you multiply a vector with 4 components with a 4x4 matrix. If you do not know how that works, I would suggest a quick google.

Most of the times you use a 4x4 matrix. A normal transformation matrix could look like this:
\begin{bmatrix}rot+scale&rot+scale&rot+scale&translation\\rot+scale&rot+scale&rot+scale&translation\\rot+scale&rot+scale&rot+scale&translation\\0&0&0&1\end{bmatrix}
(The rotation and scale are put in the 3x3 area you could say, so for just rotation and scale a 3x3 matrix could also be used, but when translation comes in, we need that 4th column.)

As you can see, if the last component is 0, then you have a multiplication with 0 and therefore the result is 0 and there is no translation.

This makes it easy in computer graphics with polygonal objects. You have the same transformation matrix to transform the positions but also the normals. Because the normals have their w component set to 0 and the positions' w component is 1, the normals are just rotated (and also scaled which can lead to some weird stuff, so most of the times the normal is normalized after. It isn't actually recommended to use the same matrix for positions and rotations because of the weird stuff! Look at @username_5 's comment.) and the positions are translated (and rotated and scaled around the origin).

Hope I did not make a mistake :P, and this helped you!

> **Comments:**
> **username_5**: Normals are not transformed with the same transformation matrix as positions. You need to calculate inverse of the transpose of the 3x3 sub-matrix to properly transform normals for transformations with non-uniform scaling and/or skewing.  
> **username_4**: @username_5 yeah that is true, you are right with that. It is best to not use the same matrix, but depending on the implementation, it is done. Most of the times people do not care about the skewing of the normals that much, because they either do not use non-uniform scaling or scaling at all. That part about transforming positions and normals was more about that it could be useful to use one container.  
> **username_6**: super late to the party but... what if you have vertex positions of an object in its own local frame, and want to rotate the object. it would seem that representing the vertex positions as locations would make them un-rotatable, so the correct representation would actually be vectors (direction + scale)?  

---

