• Create Account

### #Actualthewhiteaussie

Posted 22 June 2013 - 07:20 PM

Quaternion concatenation is noncommutative. That is

qa * qb    qb * qa

However

q-1 * q = q * q-1 = Iq

where q-1 is the inverse of q and Iq is the identity quaternion. VQS concatenation is also noncommutative:

TA_B  * TB_C     TB_C * TA_B

Where TA_B represents a VQS transformation. Now, we find the inverse of TA_B like so:

TA_B-1 = TB_A

My question is, is the concatenation of a VQS with its inverse commutative? Ie, is the following statement correct?

TA_B * TB_A = TB_A * TA_B = IVQS

Where IVQS  is the identity VQS. With the implementation I’m using I’m finding

T -1 * T   =   IVQS, whereas

T * T -1      IVQS

This seems incorrect; both sould return IVQS.

EDIT:

Here is the implementation of VQS Inverse and concatenation functions I'm using:

//--------------------------------------------------------------------------------
//		Concatenation
//--------------------------------------------------------------------------------
VQS VQS::operator*(const VQS& rhs) const
{
VQS result;

//Combine translation vectors
result.v = q.Rotate(rhs.v) * s + v;

//Combine quaternions
result.q = q * rhs.q;

//Combine scales
result.s = s * rhs.s;

//Return result
return result;

}	//End: VQS::operator*()

//--------------------------------------------------------------------------------
//		Returns inverse VQS
//--------------------------------------------------------------------------------
VQS Inverse(const VQS& other)
{
VQS temp;

//Inverse scale
temp.s = 1.0f / other.s;

//Inverse quaternion
temp.q = Inverse(other.q);

//Inverse vector
temp.v = temp.q.Rotate(-other.v) * temp.s;

return temp;

}	//End: Inverse()


### #2thewhiteaussie

Posted 22 June 2013 - 06:53 PM

Quaternion concatenation is noncommutative. That is

qa * qb    qb * qa

However

q-1 * q = q * q-1 = Iq

where q-1 is the inverse of q and Iq is the identity quaternion. VQS concatenation is also noncommutative:

TA_B  * TB_C     TB_C * TA_B

Where TA_B represents a VQS transformation. Now, we find the inverse of TA_B like so:

TA_B-1 = TB_A

My question is, is the concatenation of a VQS with its inverse commutative? Ie, is the following statement correct?

TA_B * TB_A = TB_A * TA_B = IVQS

Where IVQS  is the identity VQS. With the implementation I’m using I’m finding

T -1 * T   =   IVQS, whereas

T * T -1      IVQS

This seems incorrect; both sould return IVQS.

EDIT:

Here is the implementation of VQS Inverse and concatenation functions I'm using:

//--------------------------------------------------------------------------------
//		Concatenation
//--------------------------------------------------------------------------------
VQS VQS::operator*(const VQS& rhs) const
{
VQS result;

//Combine translation vectors
result.v = q.Rotate(rhs.v) * s + v;

//Combine quaternions
result.q = q * rhs.q;

//Combine scales
result.s = s * rhs.s;

//Return result
return result;

}	//End: VQS::operator*()

//--------------------------------------------------------------------------------
//		Returns inverse VQS
//--------------------------------------------------------------------------------
VQS Inverse(const VQS& other)
{
VQS temp;

//Inverse scale
temp.s = 1.0f / other.s;

//Inverse quaternion
temp.q = Inverse(other.q);

//Inverse vector
temp.v = temp.q.Rotate(-other.v) * temp.s;

return temp;

}	//End: Inverse()


### #1thewhiteaussie

Posted 22 June 2013 - 04:41 PM

Quaternion concatenation is noncommutative. That is

qa * qb    qb * qa

However

q-1 * q = q * q-1 = Iq

where q-1 is the inverse of q and Iq is the identity quaternion. VQS concatenation is also noncommutative:

TA_B  * TB_C     TB_C * TA_B

Where TA_B represents a VQS transformation. Now, we find the inverse of TA_B like so:

TA_B-1 = TB_A

My question is, is the concatenation of a VQS with its inverse commutative? Ie, is the following statement correct?

TA_B * TB_A = TB_A * TA_B = IVQS

Where IVQS  is the identity VQS. With the implementation I’m using I’m finding

T -1 * T   =   IVQS, whereas

T * T -1      IVQS

This seems incorrect; both sould return IVQS.

PARTNERS