# Minimum requirements to uniquely represent a 3D object in space

Let's assume we have a 3D object (in 3D space). We get a single representation vertex from this whole 3D object. Given the fact that the object can be moved and rotated in the space in any direction, what are the minimum set of other information to add to uniquely identify the object's direction and translation in space?

For instance lets consider this 3D object. If we have one single point as a reference, we can construct the whole object (the spatial dependency of other points/vertices are known). The single point can infer the movement. But the object can also rotate in any axis. I was initially thinking with a single normal vector added we can infer the object in space. But looks like we need at least two vectors (am I right?) because the object can also rotate around the normal vector. If we have another vector (maybe orthogonal to the first one), we can infer the whole 3D location. With that we can infer the degree of rotation around the normal axis. Is this right?

Another alternative can be to store 3 reference points. Right? • What if there's rotation around a different axis than the normal? Jun 10, 2017 at 4:54
• The normal changes then. Jun 10, 2017 at 16:11

A rigid body has 6 degrees of freedom, in 3D- space. So that means you need 6 values to represent the object. The common way to do this is to store a position vector for position and 3 rotations. But for obvious reasons any 6 variables that are independent of each other would do this.

The problem with vectors is that they aren't the most efficient way to store the data. If you have a vector for origin and a normal you still need one value for the rotation around the normal resulting in seven variables (this is called an axis angle rotation). Two reference points on object has same problem since you dont know the rotation around the axis of point 1 and point 2 leading to 7 variables. Image 1: Storing vectors of 2 points has a freedom to rotate along the axis of those the vectors

Now storing extra values can be beneficial for other purposes than position and orientation. So it is quite common to store 7 values for solid bodies. This way it is easier to interpolate so that you dont need to convert between representations all the time.

• Very interesting. Now one question that I have is how does the transformation matrices look like (both for translation and rotation)? A matrix that if applied to all the origin points will give me the new object. Jun 10, 2017 at 16:18
• That could be the beginning of a new question... We also have many questions tagged transformations Jun 11, 2017 at 0:17
• @trichoplax ok. My new question is posted here: computergraphics.stackexchange.com/questions/5230 Jun 12, 2017 at 19:00

You need a position, and an orientation.

Positions are easy, obviously -- just 3 coordinates.

There are many different ways to represent an orientation: start reading here, or here. The common ones are rotation matrices, quaternions, and Euler angles.

In theory, an orientation has only 3 degrees of freedom, so you ought to be able to represent it with three numbers. But representations that use 3 numbers inevitably have discontinuities or singularities (like "gimbal lock"), so using 4 numbers (e.g. a quaternion) is more practical.

• You dont actually need a rotation at all, it is practical but not needed. Also singularities in euler angles is only a problem if you intend to interpolate stuff. Jul 12, 2017 at 13:44
• Apparently we have different understandings of the word "rotation". So I changed to use "orientation", instead. Clearly you do need an orientation if you want to orient objects in 3D. Jul 13, 2017 at 0:26