gingerBill
You lose information when you reduce the degrees of freedom.
Yes, and for Gibbs vectors this information is
length of a vector. Because
we already know their length, it equals to
one, these are versors. So we lose 4th dimension to drop length information
we already know.
gingerBill
Show me the evidence that the memory saving cost is worth it over the performance one in the real world and not the theoretical one.
Real world fact #1: 3 is less than 4.
Gibbs vectors are smaller than quaternions.
Real world fact #2: The fallacy of your statement is that it assumes Gibbs vectors require more compute power than quaternions.
They don't.
Quaternion product:
| a.x * b.w + b.x * a.w + (a.y * b.z - b.y * a.z)
a.y * b.w + b.y * a.w + (a.z * b.x - b.z * a.x)
a.z * b.w + b.z * a.w + (a.x * b.y - b.x * a.y)
a.w * b.w - (a.x * b.x + a.y * b.y + a.z * b.z)
|
Gibbs vector product:
Removing forth vector component by replacing it with 1,
adding 3 divides to encode dot product into the vector components:
| d = 1 * 1 - (a.x * b.x + a.y * b.y + a.z * b.z)
a.x * 1 + b.x * 1 + (a.y * b.z - b.y * a.z) / d
a.y * 1 + b.y * 1 + (a.z * b.x - b.z * a.x) / d
a.z * 1 + b.z * 1 + (a.x * b.y - b.x * a.y) / d
|
Removing 7 multiply instructions because
we know multiplying a value by 1 yields that value without a change:
| d = 1 - (a.x * b.x + a.y * b.y + a.z * b.z)
a.x + b.x + (a.y * b.z - b.y * a.z) / w
a.y + b.y + (a.z * b.x - b.z * a.x) / w
a.z + b.z + (a.x * b.y - b.x * a.y) / w
|
7 fp multiplies less,
3 fp divides more than quaternions.
gingerBill
Show me the evidence that the memory saving cost is worth it over the performance one in the real world and not the theoretical one.
It's a win in space / win in performance situation, that's the reality.