在空間中唯一表示3D對象的最低要求


4

假設我們有一個3D對象(在3D空間中)。我們從整個3D對象獲得單個表示頂點。考慮到物體可以在空間中任意方向移動和旋轉的事實,為唯一地標識物體的方向和空間平移而添加的最少其他信息是什麼?

例如,讓我們考慮這個3D對象。如果我們將一個點作為參考,則可以構造整個對象(其他點/頂點的空間依賴性是已知的)。單點可以推斷出運動。但是對像也可以沿任何軸旋轉。最初我想添加一個法線向量,我們就可以推斷出空間中的物體。但是看起來我們至少需要兩個向量(對嗎?),因為對像也可以圍繞法線向量旋轉。如果我們有另一個向量(可能與第一個向量正交),則可以推斷整個3D位置。這樣我們就可以推斷出繞法線軸的旋轉程度。是這樣嗎?

另一個選擇是可以存儲3個參考點。對吧?

enter image description here

6

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.

enter image description here

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.


0

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.