Message 1 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030115 13:58:18 PST
Given a unitlength quaternion function q(t), you will find in
various references the equation for the derivative
(1) dq/dt = 0.5*w(t)*q(t)
where w(t) is a quaternion representing angular velocity.
However, if you write q(t) = cos(a(t)/2)+u(t)*sin(a(t)/2)
and differentiate directly, you get
(2) dq/dt = 0.5*(da/dt)*u(t)*q(t) + (du/dt)*sin(a/2)
Since ASCII math is hard to do, I uploaded
http://www.magicsoftware.com/Temp/QuaternionPuzzle.pdf
that shows a derivation of (1) similar to one in document of
David Baraff and to the one in Jack Kuiper's book on
quaternions. I also show the derivation of (2) and mention
a couple of online papers that agree with this version.
Anyone know how to resolve the differences here. In particular
how does w(t) in equation (1) compare to (da/dt)*u(t) in equation
(2), and what to do about that extra term in equation (2)?

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Post a followup to this message
Message 2 in thread
From: Pete (Pete@removebtclick.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030115 15:02:10 PST
"Dave Eberly" <eberly@magicsoftware.com> wrote in message
news:JOkV9.12105$Qr4.1198772@newsread1.prod.itd.earthlink.net...
> Given a unitlength quaternion function q(t), you will find in
> various references the equation for the derivative
> (1) dq/dt = 0.5*w(t)*q(t)
> where w(t) is a quaternion representing angular velocity.
> However, if you write q(t) = cos(a(t)/2)+u(t)*sin(a(t)/2)
> and differentiate directly, you get
> (2) dq/dt = 0.5*(da/dt)*u(t)*q(t) + (du/dt)*sin(a/2)
Isn't (1) only true for rotation about a fixed axis?
With w(t) = u * da/dt.
Otherwise I don't see how you avoid the extra term.
Pete
Post a followup to this message
Message 3 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030115 19:30:26 PST
"Pete" <Pete@removebtclick.com> wrote in message
news:b04p8n$7r$1@venus.btinternet.com...
>
> "Dave Eberly" <eberly@magicsoftware.com> wrote in message
> news:JOkV9.12105$Qr4.1198772@newsread1.prod.itd.earthlink.net...
> > Given a unitlength quaternion function q(t), you will find in
> > various references the equation for the derivative
> > (1) dq/dt = 0.5*w(t)*q(t)
> > where w(t) is a quaternion representing angular velocity.
> > However, if you write q(t) = cos(a(t)/2)+u(t)*sin(a(t)/2)
> > and differentiate directly, you get
> > (2) dq/dt = 0.5*(da/dt)*u(t)*q(t) + (du/dt)*sin(a/2)
>
> Isn't (1) only true for rotation about a fixed axis?
I believe it is true for a variable axis (numerical experiments
also support this). But if you believe it is not true, then the
construction I provided in the uploaded PDF file is wrongI
would appreciate any corrections to that construction.
> With w(t) = u * da/dt.
>
> Otherwise I don't see how you avoid the extra term.
If w(t) = u * da/dt, then the only way (1) and (2) can
agree is if du/dt = 0, which it is not since the rotation axis
direction can change over time.

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Message 4 in thread
From: Pete (Pete@removebtclick.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030115 23:49:02 PST
 Original Message 
From: "Dave Eberly" <eberly@magicsoftware.com>
Newsgroups: comp.graphics.algorithms
Sent: Thursday, January 16, 2003 3:29 AM
Subject: Re: quaternion puzzle
> "Pete" <Pete@removebtclick.com> wrote in message
> news:b04p8n$7r$1@venus.btinternet.com...
> >
> > "Dave Eberly" <eberly@magicsoftware.com> wrote in
message
> > news:JOkV9.12105$Qr4.1198772@newsread1.prod.itd.earthlink.net...
> > > Given a unitlength quaternion function q(t), you will find in
> > > various references the equation for the derivative
> > > (1) dq/dt = 0.5*w(t)*q(t)
> > > where w(t) is a quaternion representing angular velocity.
> > > However, if you write q(t) = cos(a(t)/2)+u(t)*sin(a(t)/2)
> > > and differentiate directly, you get
> > > (2) dq/dt = 0.5*(da/dt)*u(t)*q(t) + (du/dt)*sin(a/2)
> >
> > Isn't (1) only true for rotation about a fixed axis?
>
> I believe it is true for a variable axis (numerical experiments
> also support this). But if you believe it is not true, then the
> construction I provided in the uploaded PDF file is wrongI
> would appreciate any corrections to that construction.
>
I'm a bit new to this so apologies in advance for any errors but.....
This can be handled much more cleanly in geometric algebra where a
quaternion represents an even subalgebra of the full GA :
q = a + c
where a = scalar and c = arbitrary bivector
we can write c = Ib
where b is an arbitrary vector and I = the pseudoscalar formed by the triple
product of the basis vectors I=e1*e2*e3.
Now note that Ib*Ib = 1
This allows us to write a unit quaternion in the form q = exp+/(Ib * A/2)
where A is the rotation angle and b is the rotation axis.
Since GA is a linear algebra we can apply differentiation in the normal way
to get :
q' = 0.5*I*(b'A + bA')q [' denotes d/dt]
And writing IbA' = w gives
q' = 0.5*I*(b'A + w)q
The first term will only disappear if b' = 0 to give
q' = 0.5*w*q
where w is clearly a bivector which in 3d can be mapped to a vector ala the
cross product.
Note though that in GA the analysis works in any dimension
Hth
Pete
Message 5 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 06:06:02 PST
"Pete" <Pete@removebtclick.com> wrote in message
news:b05o4e$3qt$1@sparta.btinternet.com...
<snip of GA construction>
> Since GA is a linear algebra we can apply differentiation in
> the normal way to get :
> q' = 0.5*I*(b'A + bA')q [' denotes d/dt]
>
> And writing IbA' = w gives
> q' = 0.5*I*(b'A + w)q
>
> The first term will only disappear if b' = 0 to give
> q' = 0.5*w*q
>
> where w is clearly a bivector which in 3d can be mapped to
> a vector ala the cross product.
Using GA methods produces the same result as using
calculus directly on my definition of q(t). Sorry, the GA
construction does not provide any new insight for me.
My equation (1) was dq/dt = 0.5*w(t)*q(t) where
w(t) = w0*i+w1*j+w2*k and W(t) = (w0,w1,w2) is the
angular velocity vector. Equation (1) is used in dynamics
as an alternative to the matrix differential equation
(3) dR/dt = S R
where S = [sij] is skewsymmetric with s11 = s22 = s33 = 0,
s21 = s12 = w2, s13 = s31 = w1, s32 = s23 = w0. The
matrix R(t) is used to orient a rigid body in the world by
r = R*b where b is in body coordinates and r is in world
coordinates. The quaternion q(t) represents R(t).
I understand the mathematical models about rigid body motion
and all the various parameters, including angular velocity. In order
to verify that (1) and (3) are interchangeable, I attempted to
construct dq/dt from q(t) = cos(a/2)+u*sin(a/2) as shown in
equation (2) of a previous post
(2) dq/dt = 0.5*(da/dt)*u(t)*q(t) + (du/dt)*sin(a/2)
Clearly a different form than (1). If you set w(t) = (da/dt)*u(t),
then as you claim I would need du/dt = 0. But the rotation axis
direction can vary with time, so we have a problem. If you were
to construct a and u from a constant angular velocity vector
W, you would choose a = Length(W), U = (u0,u1,u2) = W/a,
and u = u0*i+u1*j+u2*k. This is what a GA approach would
do, exp(W/2) = cos(a/2)+(W/a)*sin(a/2) [for example, page 71
of Lounesto's "Clifford Algebras and Spinors"]. In this context
it appears w(t) = a(t)*u(t) is the correct choice. This is probably
the source of my confusion because I initially thought that
w(t) = (da/dt)*u(t) looked like the natural choice.
At any rate, I am quite content with equation (1) in a physics
simulator. Just my mathematical inquisitiveness coming into
play about equation (2). Certainly (2) is not a convenient form
for a numerical implementation.

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Message 6 in thread
From: Pete (Pete@removebtclick.com)
Subject: Re: quaternion puzzle
View this article only
Newsgroups: comp.graphics.algorithms
Date: 20030116 07:45:01 PST
"Dave Eberly" <eberly@magicsoftware.com> wrote in message
news:c%yV9.12980$Dq.1294817@newsread2.prod.itd.earthlink.net...
>
> Clearly a different form than (1). If you set w(t) = (da/dt)*u(t),
> then as you claim I would need du/dt = 0. But the rotation axis
> direction can vary with time, so we have a problem.
Actually I made the elementary mistake earlier of assuming that
Ib'Aq = 0 ==> b'=0
whereas in general we just require that Ib' and q are orthogonal for Ib'q =0
I think this arises from the requirement that qq* = 1 using a similar
contruction to u (dot) u = 1 in your earlier post.
I clearly need more practise with these things.
Pete
Message 7 in thread
From: Dom (domibel@cs.tuberlin.de)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030115 15:25:28 PST
Can you explain why the quaternion u(t) depends on time?
I think this is only a constant value. And then the extratermderivation is
zero.
Message 8 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030115 19:31:50 PST
"Dom" <domibel@cs.tuberlin.de> wrote in message
news:3e25eddc_2@news.arcorip.de...
> Can you explain why the quaternion u(t) depends on time?
> I think this is only a constant value. And then the extratermderivation
is
> zero.
The components of u are the components of the direction
vector for the rotation axis. The quaternion varies with time,
so either the angle changes in time or the axis changes in time
(or both). If the axis changes, then u depends on t.

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Message 9 in thread
From: John Blackburne (johnb@hk.super.net)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030115 15:30:37 PST
In article <JOkV9.12105$Qr4.1198772@newsread1.prod.itd.earthlink.net>,
"Dave Eberly" <eberly@magicsoftware.com> wrote:
> Given a unitlength quaternion function q(t), you will find in
> various references the equation for the derivative
> (1) dq/dt = 0.5*w(t)*q(t)
> where w(t) is a quaternion representing angular velocity.
> However, if you write q(t) = cos(a(t)/2)+u(t)*sin(a(t)/2)
> and differentiate directly, you get
> (2) dq/dt = 0.5*(da/dt)*u(t)*q(t) + (du/dt)*sin(a/2)
>
> Since ASCII math is hard to do, I uploaded
> http://www.magicsoftware.com/Temp/QuaternionPuzzle.pdf
> that shows a derivation of (1) similar to one in document of
> David Baraff and to the one in Jack Kuiper's book on
> quaternions. I also show the derivation of (2) and mention
> a couple of online papers that agree with this version.
>
> Anyone know how to resolve the differences here. In particular
> how does w(t) in equation (1) compare to (da/dt)*u(t) in equation
> (2), and what to do about that extra term in equation (2)?
I think you've just shown they are the same. Certainly (1) is correct
(I've seen a far simpler derivation not involving trig, but don't have it
to hand) and I can't see anything wrong with (2).
They are obviously the same when w and u are parallel, i.e. when it's
spinning about the same axis it's initial rotation axis. Then w = u *
da/dt and du/dt is zero. It's less obvious more generally, but you could
take your algebra as proof of it. There may be a more direct way of
relating them, especially as u is a unit vector so du/dt is normal to it
and measures the rate of shift of axis: intuitively the more w and u point
in different directions the greater the magnitude of du/dt.
John

John Blackburne; programmer, The Pitbull Syndicate
<http://www.hk.super.net/~johnb>
Message 10 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030115 19:36:24 PST
"John Blackburne" <johnb@hk.super.net> wrote in message
news:johnb1501032330570001@ppp2258059.friaco.access.uk.tiscali.com...
> I think you've just shown they are the same. Certainly (1) is correct
> (I've seen a far simpler derivation not involving trig, but don't have
it
> to hand) and I can't see anything wrong with (2).
Perhaps I have shown they are the same, but then I should
be able to apply some algebra/calculus/trigonometry to
manipulate the righthand side of (2) to obtain the righthand
side of (1). My original post is evidence I have been unable to
do so :)
> They are obviously the same when w and u are parallel, i.e. when it's
> spinning about the same axis it's initial rotation axis. Then w = u *
> da/dt and du/dt is zero. It's less obvious more generally, but you could
> take your algebra as proof of it. There may be a more direct way of
> relating them, especially as u is a unit vector so du/dt is normal to it
> and measures the rate of shift of axis: intuitively the more w and u point
> in different directions the greater the magnitude of du/dt.
I suppose I just need to think a bit harder about the mathematical
steps to equate the righthand side of (2) to the righthand side
of (1). Thanks for the feedback.

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Message 11 in thread
From: Pete (Pete@removebtclick.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 00:54:03 PST
"John Blackburne" <johnb@hk.super.net> wrote in message
news:johnb1501032330570001@ppp2258059.friaco.access.uk.tiscali.com...
>
> ........especially as u is a unit vector so du/dt is normal to it
> and measures the rate of shift of axis: intuitively the more w and u point
> in different directions the greater the magnitude of du/dt.
>
Is this necessarilly the case in general?
Frx if u = (at +b) with a and b arbitrary vectors
then u' is not orthognal to u even after normalisation is it ?
We shouldn't confuse a time dependent vector with vectors derived from the
same time dependent point (ie tangent and normal to a path).
However I suspect this may be the case if u is of constant length and is
cyclic such that u(t) = u(t + nk).
Certainly u = cos(wt), sin(wt)/sqrt(2), sin(wt)/sqrt(2) is orthogonal to u'
Can anyone shed some light on this?
Pete
Message 12 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 06:10:00 PST
"Pete" <Pete@removebtclick.com> wrote in message
news:b05rv8$fp6$1@knossos.btinternet.com...
>
> "John Blackburne" <johnb@hk.super.net> wrote in message
> news:johnb1501032330570001@ppp2258059.friaco.access.uk.tiscali.com...
> >
> > ........especially as u is a unit vector so du/dt is normal to it
> > and measures the rate of shift of axis: intuitively the more w and
u point
> > in different directions the greater the magnitude of du/dt.
> >
>
> Is this necessarilly the case in general?
> Frx if u = (at +b) with a and b arbitrary vectors
> then u' is not orthognal to u even after normalisation is it ?
For arbitrary a and b, a*t+b is not generally a unit vector. If
u(t) is a unit vector for all t, then Dot(u(t),u(t)) = 1. Differentiate
with respect to t to generate the equation Dot(u,du/dt) = 0 for
all t. So du/dt is perpendicular to u.

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Post a followup to this message
Message 13 in thread
From: Pete (Pete@removebtclick.com)
Subject: Re: quaternion puzzle
View this article only
Newsgroups: comp.graphics.algorithms
Date: 20030116 06:52:01 PST
"Dave Eberly" <eberly@magicsoftware.com> wrote in message
news:X2zV9.12982$Dq.1301052@newsread2.prod.itd.earthlink.net...
> "Pete" <Pete@removebtclick.com> wrote in message
>
> For arbitrary a and b, a*t+b is not generally a unit vector. If
> u(t) is a unit vector for all t, then Dot(u(t),u(t)) = 1. Differentiate
> with respect to t to generate the equation Dot(u,du/dt) = 0 for
> all t. So du/dt is perpendicular to u.
>
Yes that construction makes it obvious.
For some reason the result seems counterintuitive to me; as though there
was some constraint on how I am allowed to moved a stick sound in space. But
I guess the constraint comes from the requirement that the stick is rigid.
Still seems counterintuitive though ;(
Pete
Post a followup to this message
Message 14 in thread
From: Jerzy Karczmarczuk (karczma@info.unicaen.fr)
Subject: Re: quaternion puzzle
View this article only
Newsgroups: comp.graphics.algorithms
Date: 20030116 06:56:44 PST
Pete wrote:
>> ...If u(t) is a unit vector for all t, then Dot(u(t),u(t)) = 1. Differentiate
>>with respect to t to generate the equation Dot(u,du/dt) = 0 for
>>all t. So du/dt is perpendicular to u.
>>
>
>
> Yes that construction makes it obvious.
>
> For some reason the result seems counterintuitive to me; as though there
> was some constraint on how I am allowed to moved a stick sound in space.
But
> I guess the constraint comes from the requirement that the stick is rigid.
>
> Still seems counterintuitive though ;(
I don't understand what is counterintuitive here. It is exactly what
anybody would see and imagine. If you rotate a stick about its end by
a small angle, the displacement of the other end is orthogonal to the
stick. You SEE IT directly.
Jerzy Karczmarczuk
Post a followup to this message
Message 15 in thread
From: Pete (Pete@removebtclick.com)
Subject: Re: quaternion puzzle
View this article only
Newsgroups: comp.graphics.algorithms
Date: 20030116 07:50:04 PST
"Jerzy Karczmarczuk" <karczma@info.unicaen.fr> wrote in message
news:3E26C82B.4060900@info.unicaen.fr...
>
> Pete wrote:
>
> >
> > Still seems counterintuitive though ;(
>
> I don't understand what is counterintuitive here. It is exactly what
> anybody would see and imagine. If you rotate a stick about its end by
> a small angle, the displacement of the other end is orthogonal to the
> stick. You SEE IT directly.
>
Many thanks, I have now adjusted my mental model and intuition has been
fully restored ;)
Pete
Message 16 in thread
From: HansBernhard Broeker (broeker@physik.rwthaachen.de)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 03:31:28 PST
Dave Eberly <eberly@magicsoftware.com> wrote:
> Given a unitlength quaternion function q(t), you will find in
> various references the equation for the derivative
> (1) dq/dt = 0.5*w(t)*q(t)
The key to this may be that this is not an much of an equation, but
rather the _definition_ of the angular velocity quaternion, w(t), as
far as quaternion algebra is concerned.
> Anyone know how to resolve the differences here. In particular
> how does w(t) in equation (1) compare to (da/dt)*u(t) in equation
> (2),
I'd say it just doesn't. It's not as simple as that.
> and what to do about that extra term in equation (2)?
Accept it as a fact of life? ;)

HansBernhard Broeker (broeker@physik.rwthaachen.de)
Even if all the snow were burnt, ashes would remain.
Message 17 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 06:21:45 PST
"HansBernhard Broeker" <broeker@physik.rwthaachen.de> wrote
in message
news:b0656g$k5t$1@nets3.rz.RWTHAachen.DE...
> Dave Eberly <eberly@magicsoftware.com> wrote:
> > Given a unitlength quaternion function q(t), you will find in
> > various references the equation for the derivative
> > (1) dq/dt = 0.5*w(t)*q(t)
>
> The key to this may be that this is not an much of an equation, but
> rather the _definition_ of the angular velocity quaternion, w(t), as
> far as quaternion algebra is concerned.
As I mentioned in another post, the equivalent equation when using
an orientation matrix R(t) is dR/dt = S*R where S is a skewsymmetric
matrix built from the angular velocity vector W(t). In the rigid body
physics simulator, the angular velocity is determined by the current
angular momentum and inertia tensor. Its value is used to compute
the orientation matrix at the next time step. In this setting, (1) does
not "define" w(t).
> > Anyone know how to resolve the differences here. In particular
> > how does w(t) in equation (1) compare to (da/dt)*u(t) in equation
> > (2),
>
> I'd say it just doesn't. It's not as simple as that.
>
> > and what to do about that extra term in equation (2)?
>
> Accept it as a fact of life? ;)
Come on, Hans. You normally have constructive responses
in your posts. I thought with your physics background you could
provide more than this. Help me out here :)

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Message 18 in thread
From: HansBernhard Broeker (broeker@physik.rwthaachen.de)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 07:21:15 PST
Dave Eberly <eberly@magicsoftware.com> wrote:
> "HansBernhard Broeker" <broeker@physik.rwthaachen.de>
wrote in message
> news:b0656g$k5t$1@nets3.rz.RWTHAachen.DE...
>> Dave Eberly <eberly@magicsoftware.com> wrote:
>> > Given a unitlength quaternion function q(t), you will find in
>> > various references the equation for the derivative
>> > (1) dq/dt = 0.5*w(t)*q(t)
>>
>> The key to this may be that this is not an much of an equation, but
>> rather the _definition_ of the angular velocity quaternion, w(t), as
>> far as quaternion algebra is concerned.
> As I mentioned in another post, the equivalent equation when using
> an orientation matrix R(t) is dR/dt = S*R where S is a skewsymmetric
> matrix built from the angular velocity vector W(t).
Indeed. In tensor notation:
S_ij = epsilon_ijk * W^k # epsilon == LeviCivita
> In the rigid body physics simulator, the angular velocity is
> determined by the current angular momentum and inertia tensor.
Neither of which goes into the equivalence problem at hand, does it?
> Its value is used to compute the orientation matrix at the next time
> step. In this setting, (1) does not "define" w(t).
But is that setting part of the puzzle at hand? I don't think so. Or
to turn it around: what, if not equation (1), is the definition of
w(t), then? Where does it come from, in the context of only this
puzzle? Why is this particular object,
w(t) = (dq/dt) * q^{1}
an interesting thing that should be studied?
The puzzle has q(t), and two ways to write down its derivative
d/dt(q(t)). One of them is direct, the other introduces another
object, the angular velocity quaternion w(t), which has no other
qualities as far as q(t) is concerned.
Physicists would refer to your equation (3) as pure kinematics, i.e.
it's an equation that only deals with *how* a body moves around, but
now *why*: no forces, no masses, just positions, velocities, and time.
Dynamics, i.e. the "why", comes in from other parts of the machinery,
and it does so exactly through w(t).
Going back to your PDF, here are some points I don't quite buy, offhand:
*) why should lim(h>0, v(t,h)) = u(t)? u is the current orientation
axis, v is the axis around which the object currently
rotates. It's the axis of the *change* of orientation, which has no
direct link whatsoever to the current orientation itself.
Actually, I think the above limit is most likely undefined: it's the
direction of an infinitesimal rotation (h>0 ==> \alpha > 0).
In the limit, the transformation induced by p(t,h) is an identity.
Identity has no definable axis.
*) Where does the minus sign of the term
 (\dot{\theta}/2) * sin(\theta/2)
in the equation above (4) go to? I get
u*q = u * (u*sin(theta/2) + cos(theta/2))
= cos(theta/2)*u + u*u*sin(theta/2)
= cos(theta/2)*u + sin(theta/2)
There's no relative sign between the sin() and cos() terms, here.
u*q^{1}, OTOH, would be a different matter. I.e. I get for
equation (4):
dq/dt = 1/2 (\dot{\theta}(t) u(t)) q^{1}(t)
+ \dot{u}(t) sin(\theta(t)/2)

HansBernhard Broeker (broeker@physik.rwthaachen.de)
Even if all the snow were burnt, ashes would remain.
Message 19 in thread
From: HansBernhard Broeker (broeker@physik.rwthaachen.de)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 08:02:37 PST
[Caution: this is a supercede  original reply had an embarrassing
bug ;(]
Dave Eberly <eberly@magicsoftware.com> wrote:
> "HansBernhard Broeker" <broeker@physik.rwthaachen.de>
wrote in message
> news:b0656g$k5t$1@nets3.rz.RWTHAachen.DE...
>> Dave Eberly <eberly@magicsoftware.com> wrote:
>> > Given a unitlength quaternion function q(t), you will find in
>> > various references the equation for the derivative
>> > (1) dq/dt = 0.5*w(t)*q(t)
>>
>> The key to this may be that this is not an much of an equation, but
>> rather the _definition_ of the angular velocity quaternion, w(t), as
>> far as quaternion algebra is concerned.
> As I mentioned in another post, the equivalent equation when using
> an orientation matrix R(t) is dR/dt = S*R where S is a skewsymmetric
> matrix built from the angular velocity vector W(t).
Indeed. In tensor notation:
S_ij = epsilon_ijk * W^k # epsilon == LeviCivita
> In the rigid body physics simulator, the angular velocity is
> determined by the current angular momentum and inertia tensor.
Neither of which goes into the equivalence problem at hand, does it?
> Its value is used to compute the orientation matrix at the next time
> step. In this setting, (1) does not "define" w(t).
But is that setting part of the puzzle at hand? I don't think so. Or
to turn it around: what, if not equation (1), is the definition of
w(t), then? Where does it come from, in the context of only this
puzzle? Why is this particular object,
w(t) = (dq/dt) * q^{1}
an interesting thing that should be studied?
The puzzle has q(t), and two ways to write down its derivative
d/dt(q(t)). One of them is direct, the other introduces another
object, the angular velocity quaternion w(t), which has no other
qualities as far as q(t) is concerned.
Physicists would refer to your equation (3) as pure kinematics, i.e.
it's an equation that only deals with *how* a body moves around, but
now *why*: no forces, no masses, just positions, velocities, and time.
Dynamics, i.e. the "why", comes in from other parts of the machinery,
and it does so exactly through w(t).
Going back to your PDF, here are some points I don't quite buy, offhand:
*) why should lim(h>0, v(t,h)) = u(t)? u is the current orientation
axis, v is the axis around which the object currently
rotates. It's the axis of the *change* of orientation, which has no
direct link whatsoever to the current orientation itself.
Actually, I think the above limit is most likely undefined: it's the
direction of an infinitesimal rotation (h>0 ==> \alpha > 0).
In the limit, the transformation induced by p(t,h) is an identity.
Identity has no definable axis.
[Other issue removed by superseding article  bug in my own
calculations ...]
What this all boils down to is that
w = \dot{\theta} * u + 2 * sin(\theta/2) * \dot{u} * q^{1}
= \alpha_h(t,0) * v(t,0)
This poses no particular problems, since u need not be parallel to
v(t,0), so the additional term in the first equation is allowed to
modify it.
IOW: I don't see anything to be puzzled about.

HansBernhard Broeker (broeker@physik.rwthaachen.de)
Even if all the snow were burnt, ashes would remain.

HansBernhard Broeker (broeker@physik.rwthaachen.de)
Even if all the snow were burnt, ashes would remain.
Message 20 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 08:44:26 PST
"HansBernhard Broeker" <broeker@physik.rwthaachen.de> wrote
in message
news:b06l2t$7l4$1@nets3.rz.RWTHAachen.DE...
> Going back to your PDF, here are some points I don't quite buy, offhand:
>
> *) why should lim(h>0, v(t,h)) = u(t)? u is the current orientation
> axis, v is the axis around which the object currently
> rotates. It's the axis of the *change* of orientation, which has no
> direct link whatsoever to the current orientation itself.
Yes, this is an error on my part. (1) becomes
dq/dt = 0.5*(alpha_h(t,0) v(t,0))*q
with w(t) = alpha_h(t,0) v(t,0) and (2) is
dq/dt = 0.5*(da/dt)*u(t)*q(t) + (du/dt)*sin(a/2)
> IOW: I don't see anything to be puzzled about.
Agreed. I am now unpuzzled.
> Actually, I think the above limit is most likely undefined: it's the
> direction of an infinitesimal rotation (h>0 ==> \alpha > 0).
> In the limit, the transformation induced by p(t,h) is an identity.
> Identity has no definable axis.
The construction in Kuipers' book is a bit informal and uses only the
notation v(t). But it really does depend on h, so I wrote it as v(t,h).
His construction does take a limit as h approaches zero, but because
he uses v(t), it appears that it is constant with respect to the limit
operation and can be factored outside the limit. I wanted to see a
more formal construction where you have to worry about taking the
limit of v(t,h). But if the limit of v(t,h) does not exist, his entire
construction (and mine) have problems. Intuitively the limit of v(t,h)
as h approaches zero is the direction vector for the "infinitesimal
rotation". You claim the limit does not exist. So how about a
correct mathematical construction that lets me take the limit as h
approaches zero? David Baraff's construction in the appendix of
the document I mentioned in the PDF has a flavor similar to
Kuipers' in that some approximations are made and limits taken.
I believe the end result, of course, but as a mathematician I'd like
to see a formal construction rather than these informal ones.
Specifically, I'd like to see the limit arguments applied to quantities
with no prior discarding of higherorder terms to make the
argument appear simpler. (I was hoping 'Just' andRon Levine
would contribute along these lines, given they are experts on this
topic :)

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Dave Eberly <eberly@magicsoftware.com> wrote:
>> Actually, I think the above limit is most likely undefined: it's the
>> direction of an infinitesimal rotation (h>0 ==> \alpha >
0).
>> In the limit, the transformation induced by p(t,h) is an identity.
>> Identity has no definable axis.
[...]
> limit of v(t,h). But if the limit of v(t,h) does not exist, his entire
> construction (and mine) have problems.
I think I overstated this. What certainly isn't defined is v(t,0)
itself. The limit(h>0, v(t,h)) may still exist, though. It will,
for "wellbehaved" motion (no fractals, no jumps, no collisions...).
So let's define v(t,0) by continuous extrapolation and continue:
lim(h>0, (v(t,h)*sin(alpha(t,h)/2)) / h)
# using l'Hopital:
= lim(h>0, (d/dh(v(t,h)) * sin(alpha(t,h)/2)
+ v(t,h) / 2 * cos(alpha(t,h)/2) * alpha_h(t,h)))
The first term is not present in your derivation. It corresponds to
the axis of rotation itself moving around.
> Intuitively the limit of v(t,h) as h approaches zero is the
> direction vector for the "infinitesimal rotation". You claim
the
> limit does not exist.
On reconsideration, I drop that claim.

HansBernhard Broeker (broeker@physik.rwthaachen.de)
Even if all the snow were burnt, ashes would remain.
Message 22 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 10:17:20 PST
"HansBernhard Broeker" <broeker@physik.rwthaachen.de> wrote
in message
news:b06qj4$dsp$1@nets3.rz.RWTHAachen.DE...
> I think I overstated this. What certainly isn't defined is v(t,0)
> itself. The limit(h>0, v(t,h)) may still exist, though. It will,
> for "wellbehaved" motion (no fractals, no jumps, no collisions...).
> So let's define v(t,0) by continuous extrapolation and continue:
>
> lim(h>0, (v(t,h)*sin(alpha(t,h)/2)) / h)
>
> # using l'Hopital:
> = lim(h>0, (d/dh(v(t,h)) * sin(alpha(t,h)/2)
> + v(t,h) / 2 * cos(alpha(t,h)/2) * alpha_h(t,h)))
>
> The first term is not present in your derivation. It corresponds to
> the axis of rotation itself moving around.
If the limit of v(t,h) exists, then no need to apply l'Hopital's
rule on the full expression. The limit of a product is the
product of the limits, so
lim(h>0, (v(t,h)*sin(alpha(t,h)/2))/h)
= lim(h>0, v(t,h))*lim(h>0,sin(alpha(t,h)/2))/h)
= v(t,0)*lim(h>0,sin(alpha(t,h)/2))/h)
which is what I did in my construction.

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Message 23 in thread
From: Martin Baker
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 08:58:34 PST
Would you mind if I piggyback a related question to yours?
It was triggered by the following from your question:
> where w(t) is a quaternion representing angular velocity.
I understood that angular velocity is usually represented by a 3D vector and
can be combined by vector addition.
Whereas angular position can be represented by a quaternion and can be
combined by quaternion multiplication.
As I understand it the rules for these operations are different, for
instance, vector addition is commutative whereas quaternion multiplication
is not, and these differences represent real differences in the ways that
angular velocity and angular position can be combined.
So my questions are:
Is it meaningful and useful to represent angular velocity as a quaternion?
What does quaternion multiplication or quaternion addition represent when
applied to a quaternion representing angular velocity.
How would one differentiate a quaternion representing angular position to
get a 3D vector representing angular velocity. (do you differentiate first
then convert to vector or convert to vector first?
How would one integrate a 3D vector representing angular velocity to get a
quaternion representing angular position.
Sorry to intrude on you question.
Martin
Message 24 in thread
From: HansBernhard Broeker (broeker@physik.rwthaachen.de)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 09:42:46 PST
Martin Baker wrote:
> Would you mind if I piggyback a related question to yours?
We would. You could at least have indicated it by amending the
Subject: line. But while you're here, here's an answer...
>> where w(t) is a quaternion representing angular velocity.
> I understood that angular velocity is usually represented by a 3D vector
and
> can be combined by vector addition.
Not really. This is allowed only if the two angular velocity vectors
are parallel.
In the general case, angular velocities are every bit as complicated
to combine as fixedangle rotations.
> Whereas angular position can be represented by a quaternion and can be
> combined by quaternion multiplication.
Or by matrices, and combined by matrix multiplication. Choose your
poison.

HansBernhard Broeker (broeker@physik.rwthaachen.de)
Even if all the snow were burnt, ashes would remain.
Message 25 in thread
From: Just d' FAQs (nobodyhere@mac.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 10:46:16 PST
I will attempt to be rigorous, but keep calculations to a minimum.
The geometric situation is as follows: the function q of t maps, say,
the unit real interval [0..1] to a path on the unit quaternion sphere.
We implicitly assume that the map has a derivative at the point in
question (as opposed to a discontinuity or cusp, say). Thus in the 4D
space of all quaternions we expect a vector which is tangent to the
unit sphere at the point in question, q(t0), and thus perpendicular to
q(t0).
A quaternion with zero as its scalar component may be identified with
a vector tangent to the identity, [(0,0,0),1]. Multiplying by q(t0)
rotates the sphere so that the identity moves to q(t0), and so that
tangent vector becomes a tangent to our desired point. The tangent to
any curve through our point has such a form, because we can span the
entire 3D tangent flat with such vectors.
So we can assert that
dq/dt = 0.5 v q
for some 3D vector function v(t). We must then convince ourselves that
we have something we can interpret as angular velocity. So let r be a
unit quaternion function giving a fixed axis rotation, and agreeing
with q in position and tangent at t0. For brevity, I will omit the
arguments relating the instantaneous angular velocity to the tangent
of r; but ask if that part's not clear.
Thus it seems we are left with the chore of convincing the tangent to
your q to appear in a form we know it must have. We make it this far
without explicit calculations, but no further. For variety, let's
exhibit q as a 4D vector function, splitting u into x, y, and z:
q = [(x sin(a/2), y sin(a/2), z sin(a/2)), cos(a/2)]
Then we have, simply as a 4D vector derivative,
q' = [(x' sin(a/2) + x a'/2 cos(a/2),
y' sin(a/2) + y a'/2 cos(a/2),
z' sin(a/2) + z a'/2 cos(a/2)),
 a'/2 sin(a/2)]
In terms of your u this is
q = [u sin(a/2), cos(a/2)]
q' = a'/2 [u cos(a/2), sin(a/2)] + [u', 0] sin(a/2)
Since u X u = 0, and since u is a unit vector, this is your
q' = a'/2 [u, 0] q + [u', 0] sin(a/2)
The first term manifestly has the form of a pure vector times q; but
we *know* the variation in u must be a part of the correct answer, and
so the second term must be incorporated. Fortunately, we may again use
the fact that u is a unit vector, and deduce that u' is perpendicular
to u. So the second term is perpendicular to q in 4D; multiplying u'
by the inverse (equivalently, the conjugate) of q gives a pure vector.
[u' sin(a/2), 0] q* = [u X u' sin^2(a/2) + u' sin(a/2)cos(a/2), 0]
We conclude that the full tangent to q has the form 0.5 v q, where
v = u a' + 2 u X u' sin^2(a/2) + 2 u' sin(a/2)cos(a/2)
Using double angle formulae we might simplify this slightly to
v = u a' + (u X u') (1cos(a)) + u' sin(a)
Perhaps it's worth pointing out that the three terms of v are all
mutually perpendicular. Still, it's not pretty; but then neither is
the choice of formula for q, so what can we expect, eh?
In deriving these results we have implicitly used quaternion multiply,
[v2, s2][v1, s1] = [v2 X v1 + v2 s1 + v1 s2, s2 s1  v2 . v1]
Now just as a sanity check let's look at two simple versions of q.
First, look at 90 degree rotation around a fixed x axis at constant
speed. Then u and the derivative of a must be constant, so v is
constant, a fixed multiple of u, as expected.
Second, look at a Slerp from j to k, which in your terms would have
constant angle (180 degrees) and varying axis. This is 90 degree
rotation around a fixed x axis composed after a static 180 degree y
rotation. Hence we again expect v to be constant, (180 degrees, 0, 0).
Calculating explicitly,
a(t) = 180 degrees
u(t) = j cos(t 90 degrees) + k sin(t 90 degrees)
a'(t) = 0
u'(t) = (90 degrees)(j (sin(t 90 degrees)) + k cos(t 90 degrees))
uXu' = (90 degrees) i (cos^2(t 90 degrees) + sin^2(t 90 degrees))
= (90 degrees) i
v(t) = u 0 + (90 degrees) i 2 + u' 0
= (180 degrees) i
In summary, we have accomplished three things: (1) We have shown that
the derivative of any unit quaternion curve q can be expressed in the
form 0.5 v q, where v is a pure vector function. (2) We have given an
explicit expression for v when q is given in axisangle form. (3) We
have verified that we get the expected results for two test cases.
For the hardy few who may still be reading, I really did try to keep
calculations to a minimum! I trust the results are satisfactory.
On Wed, 15 Jan 2003 21:56:57 GMT, "Dave Eberly"
<eberly@magicsoftware.com> wrote:
>Given a unitlength quaternion function q(t), you will find in
>various references the equation for the derivative
>(1) dq/dt = 0.5*w(t)*q(t)
>where w(t) is a quaternion representing angular velocity.
>However, if you write q(t) = cos(a(t)/2)+u(t)*sin(a(t)/2)
>and differentiate directly, you get
>(2) dq/dt = 0.5*(da/dt)*u(t)*q(t) + (du/dt)*sin(a/2)
>
>Since ASCII math is hard to do, I uploaded
>http://www.magicsoftware.com/Temp/QuaternionPuzzle.pdf
>that shows a derivation of (1) similar to one in document of
>David Baraff and to the one in Jack Kuiper's book on
>quaternions. I also show the derivation of (2) and mention
>a couple of online papers that agree with this version.
>
>Anyone know how to resolve the differences here. In particular
>how does w(t) in equation (1) compare to (da/dt)*u(t) in equation
>(2), and what to do about that extra term in equation (2)?
Message 26 in thread
From: Dave Eberly (eberly@magicsoftware.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 12:01:50 PST
"Just d' FAQs" <nobodyhere@mac.com> wrote in message
news:d6lc2vkotdve3kius8j6cuvmte63j7gvbd@4ax.com...
> I will attempt to be rigorous, but keep calculations to a minimum.
<snip>
This is the spirit of what I was looking for.
> ... Fortunately, we may again use
> the fact that u is a unit vector, and deduce that u' is perpendicular
> to u. So the second term is perpendicular to q in 4D; multiplying u'
> by the inverse (equivalently, the conjugate) of q gives a pure vector.
>
> [u' sin(a/2), 0] q* = [u X u' sin^2(a/2) + u' sin(a/2)cos(a/2), 0]
This is the part missing from my analysis of the problem originally.
I failed to notice the "pure vector" constraint which would have
allowed me to factor dq/dt = (pure_vector)*q.
Thanks for replying!

Dave Eberly
eberly@magicsoftware.com
http://www.magicsoftware.com
http://www.wildmagic.com
Message 27 in thread
From: Pete (Pete@removebtclick.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030116 14:06:02 PST
"Just d' FAQs" <nobodyhere@mac.com> wrote in message
news:d6lc2vkotdve3kius8j6cuvmte63j7gvbd@4ax.com...
> I will attempt to be rigorous, but keep calculations to a minimum.
>
> The geometric situation is as follows: the function q of t maps, say,
> the unit real interval [0..1] to a path on the unit quaternion sphere.
> We implicitly assume that the map has a derivative at the point in
> question (as opposed to a discontinuity or cusp, say). Thus in the 4D
> space of all quaternions we expect a vector which is tangent to the
> unit sphere at the point in question, q(t0), and thus perpendicular to
> q(t0).
>
> A quaternion with zero as its scalar component may be identified with
> a vector tangent to the identity, [(0,0,0),1]. Multiplying by q(t0)
> rotates the sphere so that the identity moves to q(t0), and so that
> tangent vector becomes a tangent to our desired point. The tangent to
> any curve through our point has such a form, because we can span the
> entire 3D tangent flat with such vectors.
>
> So we can assert that
>
> dq/dt = 0.5 v q
>
FWIW, a less geometric way of arriving at this result is to begin with the
fact that
q q* = 1
diff both sides wrt t
q' q* + q q*' = 0
q' q* = q q*'
q' q* = (q* q')*
which implies that q'q* has no scalar part (ie a pure vector or bivector
depending on your pov)
In any event we can now put
q'q* = v
q' = vq
If you don't like mixing vectors and quats then just add the padding
Pete
Message 28 in thread
From: Just d' FAQs (nobodyhere@mac.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030117 01:09:34 PST
On Thu, 16 Jan 2003 22:06:00 +0000 (UTC), "Pete"
<Pete@removebtclick.com> wrote:
>FWIW, a less geometric way of arriving at this result is to begin with the
>fact that
>
>q q* = 1
>diff both sides wrt t
>q' q* + q q*' = 0
>q' q* = q q*'
>q' q* = (q* q')*
>
>which implies that q'q* has no scalar part (ie a pure vector or bivector
>depending on your pov)
Didn't you claim to be an advocate of geometric algebra? I would have
thought you'd prefer more geometry and less algebra! ;)
In any case, that last equation should properly read
q' q* = (q' q*)*
because the conjugate of ab is b*a*. Thus we can now better follow
your conclusion; from a = a* we obtain a+a* = 0, which is twice the
scalar part of a = q' q*.
However, I'm trying to establish more than an algebraic result. There
is the puzzling question of how an apparently 3D vector representing
angular velocity relates to a 4D unit quaternion. So I'm introducing
the idea that a pure vector quaternion lies in the tangent flat at the
identity, and that any flat tangent to the quaternion unit sphere can
be obtained from that archetype by multiplication. This idea is
powerful, with echoes in Lie geometry and Lie algebra. Best of all, it
helped Dave find the insight he sought.
That said, you repeat a theme seen several times in this thread, one
worth stating explicitly: Whenever we have a constraint equation, its
derivative tends to say interesting and useful things as well.
Dave said
u.u = 1 implies u'.u = 0
You said
q q* = 1 implies Scalar(q' q*) = 0
For rotation matrices
Q Q^T = I implies Q' + Q'^T = 0 (meaning Q' is skew)
and
det(Q) = 1 implies trace(Q') = 0
Clearly this is a handy tool for one's bag of tricks!
Message 29 in thread
From: Pete (Pete@removebtclick.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030117 02:04:02 PST
"Just d' FAQs" <nobodyhere@mac.com> wrote in message
news:00ff2v4ltiocn256dp1f1go1vr7mdi2b5m@4ax.com...
>
> Didn't you claim to be an advocate of geometric algebra? I would have
> thought you'd prefer more geometry and less algebra! ;)
>
Well I got the impression it wasn't that popular around here.
It does seem to polarise opionion. Hestenes and the crowd at
Cavendish/Cambridge seem dedicated to completely reworking the whole of
mathematical science in terms of GA. This seems to have provoked a bit of a
backlash in some quarters (notably theoretical physics). And of course one
the main advocates of GA on Usenet (the late Pertti) was known for his very
adverserial style which certainly rubbed a lot of people up the wrong way.
I certainly like GA as an analysis tool. I'm not yet entirely convinced
about the implementation side but then again, it's all just machine code at
the end of the day.
As for more geometry, well I did enjoy your tangent to a 4D sphere and I was
enlightened by Jerzy shaking a rigid stick at me. But mental pictures can be
misleading and a formal algebraic proof is usually to be preferred. I
remember looking at the definitive works on Differential Geometry by
Kobayasi & Nimitzu and being amazed that they didn't contain a single
diagram or figure ;)
> In any case, that last equation should properly read
> q' q* = (q' q*)*
Yes, sorry about that slip, it was late.
>
> Dave said
> u.u = 1 implies u'.u = 0
> You said
> q q* = 1 implies Scalar(q' q*) = 0
> For rotation matrices
> Q Q^T = I implies Q' + Q'^T = 0 (meaning Q' is skew)
> and
> det(Q) = 1 implies trace(Q') = 0
>
> Clearly this is a handy tool for one's bag of tricks!
>
Many thanks, I am often amazed at how effective a learning experience Usenet
can be.
Pete
Message 30 in thread
From: Just d' FAQs (nobodyhere@mac.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030118 12:36:57 PST
Personally, I welcome diverse ways of approaching a question. Bring on
your Clifford/Geometric Algebra, quaternions, matrix exponentials, Lie
groups, or whatever works for you. I'll exert a little back pressure
when anyone claims absolute superiority for any chosen technology; but
we learn a great deal by fresh looks at facts. The geometry of Euclid
and Pythagoras is still lovely, but we learned much from Descartes,
Bolyai, and Riemann. Calculus based on epsilondelta style theory has
certainly proved its worth, but Abraham Robinson's approach based on
logic was an intriguing vindication of the intuitions of Leibnitz and
Newton. And I'll end my paean to diversity
(<http://dictionary.reference.com/search?q=paean>)
by pointing out that at the very foundations of mathematics, the set
theory approach put to such dramatic use by Bourbaki has a modern
rival in topos theory.
After such a litany of highfalutin mathematics, I feel obliged to add
that our readers in this newsgroup include both high school students
and high class professors, so efforts to make your contributions
interesting and informative to both ends will be much appreciated.
(On a sociological note, yes it's a pity that we judge the appeal of a
theory by the appeal of its advocates, but that's usually a temporary
situation.)
On Fri, 17 Jan 2003 10:03:13 +0000 (UTC), "Pete"
<Pete@removebtclick.com> wrote:
>> Didn't you claim to be an advocate of geometric algebra? I would have
>> thought you'd prefer more geometry and less algebra! ;)
>>
>
>Well I got the impression it wasn't that popular around here.
>
>It does seem to polarise opionion. Hestenes and the crowd at
>Cavendish/Cambridge seem dedicated to completely reworking the whole of
>mathematical science in terms of GA. This seems to have provoked a bit of
a
>backlash in some quarters (notably theoretical physics). And of course one
>the main advocates of GA on Usenet (the late Pertti) was known for his very
>adverserial style which certainly rubbed a lot of people up the wrong way.
>
>I certainly like GA as an analysis tool. I'm not yet entirely convinced
>about the implementation side but then again, it's all just machine code
at
>the end of the day.
>
>As for more geometry, well I did enjoy your tangent to a 4D sphere and I
was
>enlightened by Jerzy shaking a rigid stick at me. But mental pictures can
be
>misleading and a formal algebraic proof is usually to be preferred. I
>remember looking at the definitive works on Differential Geometry by
>Kobayasi & Nimitzu and being amazed that they didn't contain a single
>diagram or figure ;)
Just d' FAQs wrote:
> A quaternion with zero as its scalar component may be identified with
> a vector tangent to the identity, [(0,0,0),1]. Multiplying by q(t0)
> rotates the sphere so that the identity moves to q(t0), and so that
> tangent vector becomes a tangent to our desired point. The tangent to
> any curve through our point has such a form, because we can span the
> entire 3D tangent flat with such vectors.
>
> So we can assert that
>
> dq/dt = 0.5 v q
>
> for some 3D vector function v(t).
.......
Pete wrote:
> FWIW, a less geometric way of arriving at this result is to begin with
the
> fact that
>
> q q* = 1
> diff both sides wrt t
> q' q* + q q*' = 0
> q' q* = q q*'
> q' q* = (q* q')*
>
> which implies that q'q* has no scalar part (ie a pure vector or bivector
> depending on your pov)
>
> In any event we can now put
> q'q* = v
> q' = vq
============
May I?
Suppose:
q(t) = cos(a(t)/2)+u(t)*sin(a(t)/2) as we would like it.
Here u is a unitlength, nullscalar quaternion, equivalent to a 3vector.
We know that u^2 = 1.
Why can't we use the trick used for eons in the context of the rotation
group representations by Pauli matrices?
Define b=a/2
Simply:
q(t) = exp(b*u)
= 1 b^2/2! + b^4/4!  ... [times a quat. unity]
+ b  b^3/3! + b^5/5!  ... [times u]
= cos(b) + u*sin(b) as expected.
Now, look at the exponential form and differentiate it yourself.
Jerzy Karczmarczuk
Message 32 in thread
From: Pete (Pete@removebtclick.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030117 02:46:01 PST
"Jerzy Karczmarczuk" <karczma@info.unicaen.fr> wrote in message
news:3E27C3F8.5020108@info.unicaen.fr...
>
> ============
>
> May I?
>
> Suppose:
> q(t) = cos(a(t)/2)+u(t)*sin(a(t)/2) as we would like it.
>
> Here u is a unitlength, nullscalar quaternion, equivalent to a 3vector.
> We know that u^2 = 1.
>
> Why can't we use the trick used for eons in the context of the rotation
> group representations by Pauli matrices?
>
> Define b=a/2
> Simply:
> q(t) = exp(b*u)
> = 1 b^2/2! + b^4/4!  ... [times a quat. unity]
> + b  b^3/3! + b^5/5!  ... [times u]
>
> = cos(b) + u*sin(b) as expected.
>
> Now, look at the exponential form and differentiate it yourself.
>
Yes this is a neat formulation and is one that is used extensively in
geometric algebra where there are a variety of geometric versions of
sqrt(1). I think you still need to apply qq*=1 though for Dave's question
which seems strange as the formulation q = exp(b*u) makes this implicit
since qq* becoms exp(b*u) * exp(b*u) = exp(0) = 1.
One of the things that really attracted me to GA was its ability to produce
a wave solution to a Pauli/Shrodinger equation which was completely real and
in which it was clear that the previous use of the unit imaginary was just
the electron spin in disguise. I'd been struggling to get my head round that
for some years and GA did it for me almost imediately.
Pete
Message 33 in thread
From: Fred Klingener (GigaBitBucket@yahoo.com)
Subject: Re: quaternion puzzle
Newsgroups: comp.graphics.algorithms
Date: 20030117 12:16:08 PST
Many thanks to the OP and to all of the people who contributed to this
thread. It was certainly packed by weight, one of the chewiest and most
nourishing in a long time.
I certainly don't have it all digested yet, but I'll keep working on it.
Fred Klingener
metadata block 

see also:  
Correspondence about this page  
Book Shop  Further reading. Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them. 

Commercial Software Shop Where I can, I have put links to Amazon for commercial software, not directly related to the software project, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them. 

This site may have errors. Don't use for critical systems.
Copyright (c) 19982023 Martin John Baker  All rights reserved  privacy policy.