10 3D rotations and quaternions Steve Marschner CS5625 Spring 2019 - - PowerPoint PPT Presentation

10 3d rotations and quaternions
SMART_READER_LITE
LIVE PREVIEW

10 3D rotations and quaternions Steve Marschner CS5625 Spring 2019 - - PowerPoint PPT Presentation

10 3D rotations and quaternions Steve Marschner CS5625 Spring 2019 Parameterizing rotations Euler angles rotate around x, then y, then z nice and simple R ( x , y , z ) = R z ( z ) R y ( y ) R x ( x )


slide-1
SLIDE 1

10 3D rotations and quaternions

Steve Marschner CS5625 Spring 2019

slide-2
SLIDE 2
  • Euler angles

– rotate around x, then y, then z – nice and simple

  • Axis/angle

– specify axis to rotate around,
 then angle by which to rotate

  • Unit quaternions

– A 4D representation (like 3D unit vectors for 2D sphere) – Good choice for interpolating rotations

Parameterizing rotations

ˆ a θ = kak R(θx, θy, θz) = Rz(θz)Ry(θy)Rx(θx) R(ˆ a, θ) = Fˆ

aRx(θ)F −1 ˆ a

is a frame matrix with a as its first column.

a

slide-3
SLIDE 3
  • Euler angles

– gimbal lock (saw this before) – some rotations have many representations

  • Axis/angle

– multiple representations for identity rotation – even with combined rotation angle, making small changes near 180 degree rotations requires larger changes to parameters

  • These resemble the problems with polar coordinates on

the sphere

– as with choosing poles, choosing the reference orientation for an

  • bject changes how the representation works

Problems

slide-4
SLIDE 4

Rodrigues’ rotation formula

[Leonard McMillan]

R(a, θ)x = (cos θ)x + (sin θ)(a × x) + (1 − cos θ)(a · x)a R(a, θ) = (cos θ)I + (sin θ)˜ a + (1 − cos θ)aaT

slide-5
SLIDE 5
  • Think of the set of possible orientations of a 3D object

– you get from one orientation to another by rotating – if we agree on some starting orientation, rotations and orientations are pretty much the same thing

  • It is a smoothly connected three-dimensional space

– how can you tell? For any orientation, I can make a small rotation around any axis (pick axis = 2D, pick angle = 1D)

  • This set is a subset of linear transformations called SO(3)

– O for orthogonal, S for “special” (determinant +1), 3 for 3D

What is a rotation?

slide-6
SLIDE 6
  • Representing rotations with numbers requires a function
  • The situation is analogous to representing directions in 3-space

– there we are dealing with the set S2, the two-dimensional sphere (I mean the sphere is a 2D surface) – like SO(3) it is very symmetric; no directions are specially distinguished

Calculating with rotations

f : I Rn → SO(3)

slide-7
SLIDE 7
  • We can use latitude and longitude to parameterize the 2-

sphere (aka. directions in 3D), but with some annoyances

– the poles are special, and are represented many times – if you are at the pole, going East does nothing – near the pole you have to change longitude a lot to get anywhere – traveling along straight lines in (latitude, longitude) leads to some pretty weird paths on the globe you are standing one mile from the pole, facing towards it; to get to the point 2 miles ahead of you the map tells you to turn right and walk 3.14 miles along a latitude line… – Conclusion: use unit vectors instead

Analogy: spherical coordinates

slide-8
SLIDE 8
  • When we want to represent directions we use unit vectors:

points that are literally on the unit sphere in R3

– now no points are special – every point has a unique representation – equal sized changes in coordinates are equal sized changes in direction

  • Down side: one too many coordinates

– have to maintain normalization – but normalize() is a simple and easy operation

Analogy: unit vectors

slide-9
SLIDE 9
  • Rather than one imaginary unit i, there are three such

symbols i, j, and k, with the properties

  • Multiplication of these units acts like the cross product
  • Combining multiples of i, j, k with a scalar gives the general

form of a quaternion:

Complex numbers to quaternions

ij = k ji = −k jk = i kj = −i ki = j ik = −j H = {a + bi + cj + dk | (a, b, c, d) ∈ I R4}

i2 = j2 = k2 = ijk = −1

<latexit sha1_base64="SW2bvSypz/EWEHrDQbRBHoIB3uA=">ACQHicbVBNTxsxEJ2lI+0QCg3uFhESD2U7G4SiVyqInEBiQNIBJCSNPI6s2Biexfbi4hWSPwarvAb+Bf8g97aXjnhbGhVKCN59PxmnsfzolRwY4PgwZt4N/l+anpmtvTh49z8Qnx06FJMs2wxRKR6OIGhRcYctyK/A41UhlJPAoGmyN6kcXqA1P1IEdptiV9ETxmDNqHdUrL/PvNfKVnBV5UGR+NnB5PeyVK0E1KIL8D8JnUPn2C4rY6y16851+wjKJyjJBjWmHQWq/xALPVTen2nIm8KrUyQymlA3oCbYdVFSi6ebFKldkzTF9EifaHWVJwf6ryKk0Zigj1ympPTWvayPyrVo7s3Gzm3OVZhYVGw+KM0FsQka+kD7XyKwYOkCZ5u6vhJ1STZl17pU6hTD3W8bdfKOlv8sjTfXQt3gpY58rJrI+m6u5pfrF+4pt03hYKNWazbqZAzq4R/Q/OvgYa0a1qvBfqOyuTO2EmZgBVbhM4SwAZuwDXvQAgbXcAO3cOfdez+8n97vceuE96xZghfhPT4BbGKtjQ=</latexit>
slide-10
SLIDE 10
  • Like complex numbers, quaternions have conjugates and

magnitudes

  • Also like complex numbers, quaternions have reciprocals of

the form

Complex numbers to quaternions

q−1 = 1 q = ¯ q |q| q = a + bi + cj + dk ¯ q = a bi cj dk |q| = (q¯ q)

1 2 =

p a2 + b2 + c2 + d2 = k(a, b, c, d)k

slide-11
SLIDE 11
  • Associative
  • Not commutative
  • Magnitudes multiply

Quaternion Properties

q1(q2q3) = q1q2q3 = (q1q2)q3 q1q2 6⌘ q2q1 |q1q2| = |q1| |q2|

slide-12
SLIDE 12
  • The set of unit-magnitude quaternions is called the


“unit quaternions”

– as a subset of 4D space, it is the unit 3-sphere – multiplying unit quaternions produces more unit quaternions

  • For unit quaternions:

Unit quaternions

S3 = {q ∈ H | |q| = 1} |q1| = |q2| = 1 = ⇒ |q1q2| = 1 q1, q2 ∈ S3 = ⇒ q1q2 ∈ S3 q−1 = ¯ q |q| = 1

slide-13
SLIDE 13
  • Write q as a pair of a scalar s ∈ R and vector v ∈ R3
  • Multiplication:
  • For a unit quaternion,

– so think of these as the sine and cosine of an angle ψ: – this is a lot like writing a 2D rotation as

Quaternion as scalar plus vector

(s1, v1)(s2, v2) = (s1s2 − v1·v2, s1v2 + s2v1 + v1 × v2) |s|2 + kvk2 = 1

cos θ + i sin θ

q = (cos ψ, ˆ v sin ψ) or cos ψ + ˆ v sin ψ

(s1 + v1)(s2 + v2) = s1s2 − v1·v2 + s1v2 + s2v1 + v1 × v2

<latexit sha1_base64="0+rdFPClve2ylHr/peZ5O78EH4Q=">ACjHicbVHbatAEF0rvSRu6zjpY162NYWENtbFhCaKBQWuhDCnUSsIxYrUbJktVK3R2ZGJE/7A/0L0pf24euJKf3gUVnzjmzIx3FhRQGPe9zx1m7c/fe/fWN7oOHj3qb/a3tU5OXmsOU5zLX5zEzIWCKQqUcF5oYFks4Sy+elXrZwvQRuTqAy4LmGfsQolUcIaWivrprol8+pyGi0Xk79kmWDXBHj2itVZT+60ePgl5kqN91AZrPVfOGhdt7eFKDIwjdyN+gNv6DVF/wX+CgxefiFNnURbnV6Y5LzMQCGXzJiZ7xX4IpXwUc0rplFwCTfdsDRQMH7FLmBmoWJ247xqYrmhzyT0DTX9ikDfv7RMUyY5ZbJ0Zw0vzt1aT/9NmJaTeSVUSIo3i5KS0kxp3XGNBEaOMqlBYxrYd+V8kumGUf7J7phM1i5U2M71+jMfSdizfTSRbjOUlcoLsEXLtXi+v9hb3Kfk2T4DgIJuMRbcHIvwWTnwmeBkN/NPTejwfHb9soyTrZIU/JLvHJATkmb8gJmRJOPpGv5Bv57vScsXPoHLVWp7OaeUz+KOf1D2rGw3A=</latexit>

q = a + bi + cj + dk q = s + v where s = a and v = bi + cj + dk q = (s, v) where s = a and v = (b, c, d)

<latexit sha1_base64="ZJSY/ASWNLDiOPpMi8VAmfg2u2A=">ACx3iclVHdbtMwGHXCz0aB0Y1LbiwqUCe6JmrdI0bRI3TOJiSHSbVFeV43xZTR0ns53QKuoFj7LH4i14BJx0Q/zshk+ydXzO92Mfh5ng2vj+d8d98PDR43NJ42nz5vWhu75zrNFcMRiwVqboMqQbBJYwMNwIuMwU0CQVchP3lX5RgNI8lZ/NMoNJQq8kjzmjxlLT5s01fnuEKX6HQ2439sVu0ZyQRs1reyJFgckhMbAw5dcZKFiRQytURXc0lVFVplH9/Zp606l7v5Xo3bYZ1od9ps+V2/DvwvCG5B6/gHquNsu1skShleQLSMEG1Hgd+ZjqxgGs5KakynAlYNUiuIaNsTq9gbKGkCehJWTu6wm8sE+E4VXZJg2v294qSJlovk9BmJtTM9N9aRd6njXMTDycl1luQL1oDgX2KS4+h4cQXMiKUFlClu74rZjCrKjP3EBqkLS2+k7cnTKvE+8lBRtfSsfUnsclEHoFn5yq+2CtsK/ua2sFBrzc9PEa9IM7MPzl4HmvG/S7/qdB6+R0bSXaRK/Qa9RGATpAJ+gDOkMjxJwNZ8/Zdw7cUzd1C3exTnWd25qX6I9wv/0ExiHUmA=</latexit>

v1v2 = −v1·v2 + v1 × v2

<latexit sha1_base64="Wlz9P7sVd5Q+0R0ixWV4Xeso0=">ACXHicbVDBbhMxEHWlpaUtilIXLgYIqRKpdndJIJcEJW4gMShSE1bKRtFXu9sa9X2bu3ZqNGqf8LXcIUf4MI38Ak43oKgZSR73ryZ8XheWkphMYq+t4J7K6v319YftDcebm5td3YeHduiMhzGvJCFOU2ZBSk0jFGghNPSAFOphJP04t0yfzIHY0Whj3BRwlSxMy1ywRk6atZ5lczns5gu7z59Q/d9mDxLeFagc57eow2LQoH1VHvW6Ua9yBu9C+Ib0H37k3g7nO20tpKs4JUCjVwyaydxVOLXMKlntbMoOASrtJZaFk/IKdwcRBzdzEae3XvKYvHJPRvDuaKSe/bujZsrahUpdpWJ4bm/nluT/cpMK89G0FrqsEDRvBuWVpFjQpWY0EwY4yoUDjBvh/kr5OTOMo1O2nfjGOhxbF4XWqPCjSA0zixDhSuWh0FxWGYRurhFX+3P3lNvGKzjs90fDAW3AIP4NRn8UPO734kEv+jTsHnxopCTr5Cl5TnZJTF6TA/KeHJIx4eQz+UK+km+tH8FKsBFsNqVB6bnMfnHgie/AHijtfs=</latexit>
slide-14
SLIDE 14

There is a natural association between
 the unit quaternion 
 and the 3D axis-angle rotation where θ = 2ψ.

Quaternions and rotations

ˆ v cos ψ + ˆ v sin ψ ∈ S3 ⊂ H Rˆ

v(θ) ∈ SO(3)

cos ψ + ˆ v sin ψ

unit 3-sphere in 4D space

θ = 2ψ

[Wikimedia Commons user Geek3]

Note 
 and 
 represent the
 same rotation

s + v

<latexit sha1_base64="E39ngjsgV8nEvGp8Qkx5+8gAaGo=">ACK3icbVBNbxMxEJ0NHw2hpGl75GIRISEB2d0kUnNrpV6KxKFIpKmURJHXmW2s2N6t7V01WuVHcIXfwK/hVMSVOz8BZ7cgWjqSpef35nGL0oFNzYIr3ag4ePHm/VnzSebj9r7rR2985MkmGQ5aIRJ9H1KDgCoeW4HnqUYqI4GjaHm80Uc5asMT9dGuUpxKeqF4zBm1jhoZ8pM8nzWagedoCzyPwhvQPvwF5R1Otv1mpN5wjKJyjJBjRmHQWrfxAIv1bSg2nImcN2YZAZTypb0AscOKirRTIty6zV56Zg5iRPtjrKkZP91FQas5KR65TULsxdbUPep40zGw+mBVdpZlGxalCcCWITsomAzLlGZsXKAco0d7sStqCaMuCakxKY+EPjbv5Rkv/PY801Svf4pWMfa6YyObou7maX73N3VPuN2WC/W530O+RCvTCP2DwN8GzbifsdYIP/fbRuypKqMNzeAGvIQDOITOIUhMFjCJ/gMX7yv3jfvu/ejaq15N59uFXez986cKhG</latexit>

−s − v

<latexit sha1_base64="uwxD1PD8qyqb+3GaSr1CTCg7WBk=">ACLHicbVBNSysxFL2jPj/q0+fH0k2wC5sZ6Yt2J2CGwUXClYLbZFMekeDSWZekimWwT/hVn+Dv8aNiFvX/gTqT7e83khcHLOPbk3J0oFNzYInryJyakf0zOzc6X5nwuLv5aWV05NkmGLZaIRLcjalBwhS3LrcB2qpHKSOBZdLU30s8GqA1P1IkdptiT9ELxmDNqHdWuGFIh3cHgfKkcVIOiyP8g/ADlnTco6uh82Vvs9hOWSVSWCWpMJwxSuxUL/K16OdWM4E3pW5mMKXsil5gx0FJZpeXqx9QzYc0ydxot1RlhTs346cSmOGMnKdktpL81Ubkd9pnczGzV7OVZpZVGw8KM4EsQkZUD6XCOzYugAZq7XQm7pJoy65IqdQtj7reMu/lGS/+QR5rqoW/xWsY+V0xkfTdXM2vKwP3lPtNkWCjVms26mQM6uEnaP5J8LRWDevV4LhR3j0YRwmzsAbrsAkhbMu7MRtICBgFu4g3vwXv0nr2XceuE9+FZhX/Ke30Hs0+ofw=</latexit>
slide-15
SLIDE 15
  • Represent a point in space by a pure-imaginary quaternion
  • Can compute rotations using quaternion multiplication

– note that q and –q correspond to the same rotation – you can verify this is a rotation by multiplying out…

  • Multiplication of quaternions corresponds to composition of

rotations

– the quaternion q1q2 corresponds to “rotate by q2, then rotate by q1”

Rotation and quaternion multiplication

x = (x, y, z) ∈ I R3 ↔ X = xi + yj + zk ∈ H Xrotated = qX ¯ q q1(q2X ¯ q2) ¯ q1 = (q1q2)X( ¯ q2 ¯ q1) = q1q2 X q1q2

slide-16
SLIDE 16
  • The set of directions (unit vectors) describes the set of rays

leaving a point

  • The set of lines through a point is a bit different

– no notion of “forward” vs. “backward”

  • Would probably still represent using unit vectors

– but every line has exactly two representations, v and –v

  • Similarly every rotation has exactly two representations

– q = cos 𝜔 + v sin 𝜔; –q = cos (π – ψ) – v sin (π – ψ) – a rotation by the opposite angle (2π – θ) around the negated axis

Analogy: rays vs. lines

slide-17
SLIDE 17

If we write a unit quaternion in the form then the operation is a rotation by 2ψ around the axis v. So an alternative explanation is, “All this algebraic mumbo- jumbo aside, a quaternion is just a slightly different way to encode an axis and an angle in four numbers: rather than the number θ and the unit vector v, we store the number cos (θ/ 2) and the vector sin (θ/2) v.”

Rotation and quaternion multiplication

Xrotated = qX ¯ q = (cos ψ + ˆ v sin ψ)X(cos ψ − ˆ v sin ψ) q = cos ψ + ˆ v sin ψ

slide-18
SLIDE 18
  • We can write down a parameterization of 3D rotations using

unit quaternions (points on the 3-sphere)

  • This mapping is wonderfully uniform:

– is exactly 2-to-1 everywhere – has constant speed in all directions – has constant Jacobian (does not distort “volume”) – maps shortest paths to shortest paths – and… it comes with a multiplication operation (not mentioned today)

Unit quaternions and axis/angle

f : S3 ⇢ H ! SO(3) : cos ψ + ˆ v sin ψ 7! Rˆ

v(2ψ)

: (w, x, y, z) 7!   w2 + x2 y2 z2 2(xy wz) 2(xz + wy) 2(xy + wz) w2 x2 + y2 z2 2(yz wx) 2(xz wy) 2(yz + wx) w2 x2 y2 + z2  

slide-19
SLIDE 19
  • Fast, few operations, not redundant
  • Numerically stable for incremental changes
  • Composes rotations nicely
  • Convert to matrices at the end
  • Biggest reason: spherical interpolation

Why Quaternions?

slide-20
SLIDE 20
  • Why not linear interpolation?
  • Need to be normalized
  • Does not have constant rate of rotation

Interpolating between quaternions

slide-21
SLIDE 21
  • Interpolating in the space of 3D vectors is well behaved
  • Simple computation: interpolate linearly and normalize

– this is what we do all the time, e.g. with normals for fragment shading – but for far-apart endpoints the speed is uneven (faster towards the middle)

  • For constant speed: spherical linear interpolation

– build basis {v0, w} from v0 and v1 – interpolate angle from 0 to θ – (slicker way in a few slides)

Analogy: interpolating directions

ˆ v(t) = normalize((1 − t)v0 + tv1) w = ˆ v1 − (ˆ v0 · ˆ v1)ˆ v0 ˆ w = w/kwk θ = acos(ˆ v0 · ˆ v1) ˆ v(t) = (cos tθ) ˆ v0 + (sin tθ) ˆ w

slide-22
SLIDE 22
  • Intuitive interpolation between different orientations

– Nicely represented through quaternions – Useful for animation – Given two quaternions, interpolate between them – Shortest path between two points on sphere Geodesic, on Great Circle

Spherical Linear Interpolation

slide-23
SLIDE 23

– given vectors v0, v1, and parameter t – express answer as a weighted sum – then from law of sines

Spherical linear interpolation (“slerp”)

v0 v1 v(t)

β α

ψ = cos−1(v0 · v1)

<latexit sha1_base64="hRP1js3d4SqcV32KvseZfUezX10=">ACSnicbZDNbhMxEMdn0wIlQJvCkYtFABWJZneTSORSUQkJ9cChSKStlA2R1zvbWvXHYnujRqtInHkarvAMvABvgXpDXHB2AfE1kuWf/zPjsf9pIbh1UfQ5aK2tX7l6beN6+8bNW5tbne3bR1aXhuGYaHNSUotCq5w7LgTeFIYpDIVeJyeP1vlj+doLNfqlVsUOJX0VPGcM+q8NOvcbyeF5eThHkmYtq+r3XhJdpL5fBYlLNuRfGjWacb9aI6yL8Q/4Du0y9Qx+FsO9hMs1KicoxQa2dxFHhHucC36hpRY3jTOCynZQWC8rO6SlOPCoq0U6r+lNL8sArGcm18Us5Uqu/d1RUWruQqa+U1J3Zv3Mr8X+5Seny0bTiqigdKtYMyktBnCYrh0jGDTInFh4oM9y/lbAzaihz3sd2UjdW4dj6U2iNDF/w1FCzCB1eyDzkiokyw9DPNfxid+6v8r+pHRz2+6PhgDQwiH/C6JeDR/1ePOhFL4fd/edvGy834C7cgx2I4QnswEcwhgYvIP38AE+Bp+Cy+Br8K0pbQXNDnfgj2itfwfOUbLB</latexit>

α = tψ; β = (1 − t)ψ

<latexit sha1_base64="ofPdqlivSGbgn/717Q3bPd/Um5M=">ACSXicbVBNaxRBEO3Z+BFXjYkevTQuQgSzM7O7kIUgBgTx4CGCmwR2lDTW5Nt0t0z6a4JWYaAV39NrvE3+Av8F3oT/bMqPhV0PTrV6+qul5aKOkoij4FnZVr12/cXL3VvX3n7tq9Y37+y4vrcCJyFVuD1NwqKTBCUlSeFhYBJ0qPEhPXtT5gzO0TubmLS0LnGk4NjKTAshTR+u9BFSxAP6MU1I4ucOTnSRFqonNeIue1KRXRf2oCf4viH+A3vPrIm9o41gLZnotRoSChwbhpHBT3NFJ6aWQWpFB40U1KhwWIEzjGqYcGNLpZ1ex0wR97Zs6z3PpjiDfs7xUVaOeWOvVKDbRwf+dq8n+5aUnZeFZJU5SERrSDslJxynltEJ9Li4LU0gMQVvq/crEAC4K8jd2kKazCifOv0FkdvpapBbsMCc91FkojVDnH0M+18nzrzLfy2zQOjgaD8WjIWzCMf4LxLwf3B/142I/ejHq7L9+1Xq6yh+wR2Qx2a7BXbYxMm2Ht2ya7Yh+Bj8CX4GnxrpZ2gvdkD9kd0Vr4DiDayFA=</latexit>

v(t) = w0v0 + w1v1

<latexit sha1_base64="9G4ga0tj1FeXlRl0XGdavQyjfUI=">ACRXicbZDNbhMxEMdny1cJUNL2yKEWEagImt1NIjUXRKVKFQcORSJtpSKvM5sa9X2bu3Z0GhViQtPwxWegWfgIZB6QFzB2QXE10i2f/Plsf9JrqSjKPoULF25eu36jeWbjVu376zcba6uHbisAIHIlOZPUq4QyUNDkiSwqPcIteJwsPkdHeRP5yhdTIzr2ie41jzYyNTKTj50KS5MZrNukRe/iUvZ5EzHt+f+w5rjieNFtRO6qM/QvxD2g9u4TK9ierwcpomolCoyGhuHPDOMrpSarwzIxLbkKhReNUeEw5+KUH+PQo+Ea3bis/nPBHvjIlKWZ9csQq6K/d5RcOzfXia/UnE7c37lF8H+5YUFpf1xKkxeERtSD0kIxythCHDaVFgWpuQcurPRvZeKEWy7IS9gYVY1lOHDeC53V4QuZWG7nIeG5TkNphCqmGPq5Vp5vzfxV/jeVgr1Op9/rshq68U/o/1LwoNOu+3oZa+1s/em1nIZ7sF92IQYtmEHnsM+DEDAW3gH7+FD8DH4HwJvtalS0F9wjr8YcG37w7YsNU=</latexit>

sin α w1 = sin β w0 = sin(π − ψ) 1 = sin ψ

<latexit sha1_base64="LPsORrBFyesAOzn8gScsBoz6I=">ACfXicbVBdaxNBFL3Z+lGj1rQ+jIYKhXa7G4SaF7EgiA+FDBNIVsCLOTu83QmdlxZrY2LAv+MX+Iz74q+A90sqsSPy4Mc+4592PmpFpw6LoUyvYunHz1u3tO+279+7vPOjs7p3ZvDAMxywXuTlPqUXBFY4dwLPtUEqU4GT9PLFWp9cobE8V2/dSuNM0gvFM86o89S8M0kyQ1mZWK5IQoVe0qp8P48r8uQZ2ZRSdLUSVWRTOEg0P0q05U+rMq4lT67zeacb9aI6yL8g/gm6z79BHafz3dZOshZIVE5Jqi10zjS7jAT+E7NSmocZwKrdlJY1JRd0guceqioRDsrax8qsu+ZBcly49ypGY3O0oqrV3J1FdK6pb2b21N/k+bFi4bzUqudOFQsWZRVgjicrI2lSy4QebEygPKDPdvJWxJvUnOW9O6sYyHFufhdbI8DVPDTWr0OG1zEKumCgWGPq9hl8fXflR/je1g8N+fzQckAYM4l9g9NvBs34vHvSiN8PuycsPjZfb8AgewHEcAwn8ApOYQwMPsJn+AJfW9+D/eAw6DWlQau54SH8EcHxD5DUxbo=</latexit>

w0 = sin β/ sin ψ w1 = sin α/ sin ψ

<latexit sha1_base64="H7sHSKa8YpHtsa2lgdFWMIZa35s=">ACXicbVDLbhMxFHWmLZShBQWLqxiEAsIDOTRGo2FZWQUBcsikTaSplodMe501i1PYPtaRuNKvEjfA1b+ABW/YV+As5MacvjSpaPz7kP35MWghsbhj9b3srq2r376w/8hxuP2o87m08OTF5qhmOWi1wfpWBQcIVjy63Ao0IjyFTgYXrybqkfnqI2PFef7KLAqYRjxTPOwDoq6WyfJSF9uUNjw1WcoWgRoXhceyfJdGNBqKY34p+0umGvbAO+i+IrkH37RWpYz/ZbLXjWc5KicoyAcZMorCwrzOBn9W0Am05E3jhx6XBAtgJHOPEQUSzbSq97ygLxwzo1mu3VGW1uzdigqkMQuZukwJdm7+1pbk/7RJabPRtOKqKC0q1gzKSkFtTpem0RnXyKxYOABMc/dXyuagVlnrR/XhVUwNu4VGC2DzVoBeBxXOZBVwxUc4wcHM1P39z6lq5bWoHh/3+aDigDRhEv8HoxsGDfi8a9MKPw+7u+y+Nl+tkizwnr0hEtsku2SP7ZEwY+Uq+ke/kR+vSW/M2vHaT6rWamzwlf4T37BeDIbdx</latexit>

v(t) = v0 sin β + v1 sin α sin ψ

<latexit sha1_base64="DpaeOUhVC6f9Wyro0hZRtAXmIU=">ACZXicbVBNb9NAEN2YrxJoSQviwoEVEaioENtJHJBrYSEOHAoEmkrxVE03oybVdrd3cNbIi8Wf4NVzhwC/gyk9gbRfE10irfe/NzM7Oi3MlLQXB15Z35eq16zc2brZv3d7cutPZ3jmyWEjkWmMnMSg0UlNY5JksKT3CkscLj+OxVlT9eorEy0+9pleM0hVMtEymAnDTr7EfL5S495U9e8igxIErHZwGPrNQ8ipGA7/FKCi8lUPkC1mVFotzK9azTDXpBHfxfEF6C7v53VsfhbLu1Fc0zUaSoSiwdhIGOT1LFJ7raQmGpFC4bkeFxRzEGZzixENKdpWe+75o+dMudJZtzRxGv194SUmtXaewqU6CF/TtXif/LTQpKRtNS6rwg1KIZlBSKU8Yr8/hcGhSkVg6AMNL9lYsFONvIWdyO6sbSH1vHfGtS/62MDZiVT3iRJr7UQhVz9N1cIy+eL91TbpvawWG/PxoOeAMG4U8w+uXgUb8XDnrBu2H34PWHxsN9oA9YrsZC/YAXvDtmYCfaRfWKf2ZfWN2/Tu+fdb0q9VnOzu+yP8B7+AEMCuyg=</latexit>
slide-24
SLIDE 24

– given vectors v0, v1, and parameter t – express answer as a weighted sum – then from law of sines

Spherical linear interpolation (“slerp”)

v0 v1 v(t)

β α

v0 v1 v(t)

β α π – ψ π – ψ β α

ψ = cos−1(v0 · v1)

<latexit sha1_base64="hRP1js3d4SqcV32KvseZfUezX10=">ACSnicbZDNbhMxEMdn0wIlQJvCkYtFABWJZneTSORSUQkJ9cChSKStlA2R1zvbWvXHYnujRqtInHkarvAMvABvgXpDXHB2AfE1kuWf/zPjsf9pIbh1UfQ5aK2tX7l6beN6+8bNW5tbne3bR1aXhuGYaHNSUotCq5w7LgTeFIYpDIVeJyeP1vlj+doLNfqlVsUOJX0VPGcM+q8NOvcbyeF5eThHkmYtq+r3XhJdpL5fBYlLNuRfGjWacb9aI6yL8Q/4Du0y9Qx+FsO9hMs1KicoxQa2dxFHhHucC36hpRY3jTOCynZQWC8rO6SlOPCoq0U6r+lNL8sArGcm18Us5Uqu/d1RUWruQqa+U1J3Zv3Mr8X+5Seny0bTiqigdKtYMyktBnCYrh0jGDTInFh4oM9y/lbAzaihz3sd2UjdW4dj6U2iNDF/w1FCzCB1eyDzkiokyw9DPNfxid+6v8r+pHRz2+6PhgDQwiH/C6JeDR/1ePOhFL4fd/edvGy834C7cgx2I4QnswEcwhgYvIP38AE+Bp+Cy+Br8K0pbQXNDnfgj2itfwfOUbLB</latexit>

α = tψ; β = (1 − t)ψ

<latexit sha1_base64="ofPdqlivSGbgn/717Q3bPd/Um5M=">ACSXicbVBNaxRBEO3Z+BFXjYkevTQuQgSzM7O7kIUgBgTx4CGCmwR2lDTW5Nt0t0z6a4JWYaAV39NrvE3+Av8F3oT/bMqPhV0PTrV6+qul5aKOkoij4FnZVr12/cXL3VvX3n7tq9Y37+y4vrcCJyFVuD1NwqKTBCUlSeFhYBJ0qPEhPXtT5gzO0TubmLS0LnGk4NjKTAshTR+u9BFSxAP6MU1I4ucOTnSRFqonNeIue1KRXRf2oCf4viH+A3vPrIm9o41gLZnotRoSChwbhpHBT3NFJ6aWQWpFB40U1KhwWIEzjGqYcGNLpZ1ex0wR97Zs6z3PpjiDfs7xUVaOeWOvVKDbRwf+dq8n+5aUnZeFZJU5SERrSDslJxynltEJ9Li4LU0gMQVvq/crEAC4K8jd2kKazCifOv0FkdvpapBbsMCc91FkojVDnH0M+18nzrzLfy2zQOjgaD8WjIWzCMf4LxLwf3B/142I/ejHq7L9+1Xq6yh+wR2Qx2a7BXbYxMm2Ht2ya7Yh+Bj8CX4GnxrpZ2gvdkD9kd0Vr4DiDayFA=</latexit>

v(t) = w0v0 + w1v1

<latexit sha1_base64="9G4ga0tj1FeXlRl0XGdavQyjfUI=">ACRXicbZDNbhMxEMdny1cJUNL2yKEWEagImt1NIjUXRKVKFQcORSJtpSKvM5sa9X2bu3Z0GhViQtPwxWegWfgIZB6QFzB2QXE10i2f/Plsf9JrqSjKPoULF25eu36jeWbjVu376zcba6uHbisAIHIlOZPUq4QyUNDkiSwqPcIteJwsPkdHeRP5yhdTIzr2ie41jzYyNTKTj50KS5MZrNukRe/iUvZ5EzHt+f+w5rjieNFtRO6qM/QvxD2g9u4TK9ierwcpomolCoyGhuHPDOMrpSarwzIxLbkKhReNUeEw5+KUH+PQo+Ea3bis/nPBHvjIlKWZ9csQq6K/d5RcOzfXia/UnE7c37lF8H+5YUFpf1xKkxeERtSD0kIxythCHDaVFgWpuQcurPRvZeKEWy7IS9gYVY1lOHDeC53V4QuZWG7nIeG5TkNphCqmGPq5Vp5vzfxV/jeVgr1Op9/rshq68U/o/1LwoNOu+3oZa+1s/em1nIZ7sF92IQYtmEHnsM+DEDAW3gH7+FD8DH4HwJvtalS0F9wjr8YcG37w7YsNU=</latexit>

sin α w1 = sin β w0 = sin(π − ψ) 1 = sin ψ

<latexit sha1_base64="LPsORrBFyesAOzn8gScsBoz6I=">ACfXicbVBdaxNBFL3Z+lGj1rQ+jIYKhXa7G4SaF7EgiA+FDBNIVsCLOTu83QmdlxZrY2LAv+MX+Iz74q+A90sqsSPy4Mc+4592PmpFpw6LoUyvYunHz1u3tO+279+7vPOjs7p3ZvDAMxywXuTlPqUXBFY4dwLPtUEqU4GT9PLFWp9cobE8V2/dSuNM0gvFM86o89S8M0kyQ1mZWK5IQoVe0qp8P48r8uQZ2ZRSdLUSVWRTOEg0P0q05U+rMq4lT67zeacb9aI6yL8g/gm6z79BHafz3dZOshZIVE5Jqi10zjS7jAT+E7NSmocZwKrdlJY1JRd0guceqioRDsrax8qsu+ZBcly49ypGY3O0oqrV3J1FdK6pb2b21N/k+bFi4bzUqudOFQsWZRVgjicrI2lSy4QebEygPKDPdvJWxJvUnOW9O6sYyHFufhdbI8DVPDTWr0OG1zEKumCgWGPq9hl8fXflR/je1g8N+fzQckAYM4l9g9NvBs34vHvSiN8PuycsPjZfb8AgewHEcAwn8ApOYQwMPsJn+AJfW9+D/eAw6DWlQau54SH8EcHxD5DUxbo=</latexit>

w0 = sin β/ sin ψ w1 = sin α/ sin ψ

<latexit sha1_base64="H7sHSKa8YpHtsa2lgdFWMIZa35s=">ACXicbVDLbhMxFHWmLZShBQWLqxiEAsIDOTRGo2FZWQUBcsikTaSplodMe501i1PYPtaRuNKvEjfA1b+ABW/YV+As5MacvjSpaPz7kP35MWghsbhj9b3srq2r376w/8hxuP2o87m08OTF5qhmOWi1wfpWBQcIVjy63Ao0IjyFTgYXrybqkfnqI2PFef7KLAqYRjxTPOwDoq6WyfJSF9uUNjw1WcoWgRoXhceyfJdGNBqKY34p+0umGvbAO+i+IrkH37RWpYz/ZbLXjWc5KicoyAcZMorCwrzOBn9W0Am05E3jhx6XBAtgJHOPEQUSzbSq97ygLxwzo1mu3VGW1uzdigqkMQuZukwJdm7+1pbk/7RJabPRtOKqKC0q1gzKSkFtTpem0RnXyKxYOABMc/dXyuagVlnrR/XhVUwNu4VGC2DzVoBeBxXOZBVwxUc4wcHM1P39z6lq5bWoHh/3+aDigDRhEv8HoxsGDfi8a9MKPw+7u+y+Nl+tkizwnr0hEtsku2SP7ZEwY+Uq+ke/kR+vSW/M2vHaT6rWamzwlf4T37BeDIbdx</latexit>

v(t) = v0 sin β + v1 sin α sin ψ

<latexit sha1_base64="DpaeOUhVC6f9Wyro0hZRtAXmIU=">ACZXicbVBNb9NAEN2YrxJoSQviwoEVEaioENtJHJBrYSEOHAoEmkrxVE03oybVdrd3cNbIi8Wf4NVzhwC/gyk9gbRfE10irfe/NzM7Oi3MlLQXB15Z35eq16zc2brZv3d7cutPZ3jmyWEjkWmMnMSg0UlNY5JksKT3CkscLj+OxVlT9eorEy0+9pleM0hVMtEymAnDTr7EfL5S495U9e8igxIErHZwGPrNQ8ipGA7/FKCi8lUPkC1mVFotzK9azTDXpBHfxfEF6C7v53VsfhbLu1Fc0zUaSoSiwdhIGOT1LFJ7raQmGpFC4bkeFxRzEGZzixENKdpWe+75o+dMudJZtzRxGv194SUmtXaewqU6CF/TtXif/LTQpKRtNS6rwg1KIZlBSKU8Yr8/hcGhSkVg6AMNL9lYsFONvIWdyO6sbSH1vHfGtS/62MDZiVT3iRJr7UQhVz9N1cIy+eL91TbpvawWG/PxoOeAMG4U8w+uXgUb8XDnrBu2H34PWHxsN9oA9YrsZC/YAXvDtmYCfaRfWKf2ZfWN2/Tu+fdb0q9VnOzu+yP8B7+AEMCuyg=</latexit>
slide-25
SLIDE 25

– given vectors v0, v1, and parameter t – express answer as a weighted sum – then from law of sines

Spherical linear interpolation (“slerp”)

v0 v1 v(t)

β α

v0 v1 v(t)

β α π – ψ π – ψ β α

v0 v1 v(t)

β α π – ψ π – ψ β α w0 w

1

ψ = cos−1(v0 · v1)

<latexit sha1_base64="hRP1js3d4SqcV32KvseZfUezX10=">ACSnicbZDNbhMxEMdn0wIlQJvCkYtFABWJZneTSORSUQkJ9cChSKStlA2R1zvbWvXHYnujRqtInHkarvAMvABvgXpDXHB2AfE1kuWf/zPjsf9pIbh1UfQ5aK2tX7l6beN6+8bNW5tbne3bR1aXhuGYaHNSUotCq5w7LgTeFIYpDIVeJyeP1vlj+doLNfqlVsUOJX0VPGcM+q8NOvcbyeF5eThHkmYtq+r3XhJdpL5fBYlLNuRfGjWacb9aI6yL8Q/4Du0y9Qx+FsO9hMs1KicoxQa2dxFHhHucC36hpRY3jTOCynZQWC8rO6SlOPCoq0U6r+lNL8sArGcm18Us5Uqu/d1RUWruQqa+U1J3Zv3Mr8X+5Seny0bTiqigdKtYMyktBnCYrh0jGDTInFh4oM9y/lbAzaihz3sd2UjdW4dj6U2iNDF/w1FCzCB1eyDzkiokyw9DPNfxid+6v8r+pHRz2+6PhgDQwiH/C6JeDR/1ePOhFL4fd/edvGy834C7cgx2I4QnswEcwhgYvIP38AE+Bp+Cy+Br8K0pbQXNDnfgj2itfwfOUbLB</latexit>

α = tψ; β = (1 − t)ψ

<latexit sha1_base64="ofPdqlivSGbgn/717Q3bPd/Um5M=">ACSXicbVBNaxRBEO3Z+BFXjYkevTQuQgSzM7O7kIUgBgTx4CGCmwR2lDTW5Nt0t0z6a4JWYaAV39NrvE3+Av8F3oT/bMqPhV0PTrV6+qul5aKOkoij4FnZVr12/cXL3VvX3n7tq9Y37+y4vrcCJyFVuD1NwqKTBCUlSeFhYBJ0qPEhPXtT5gzO0TubmLS0LnGk4NjKTAshTR+u9BFSxAP6MU1I4ucOTnSRFqonNeIue1KRXRf2oCf4viH+A3vPrIm9o41gLZnotRoSChwbhpHBT3NFJ6aWQWpFB40U1KhwWIEzjGqYcGNLpZ1ex0wR97Zs6z3PpjiDfs7xUVaOeWOvVKDbRwf+dq8n+5aUnZeFZJU5SERrSDslJxynltEJ9Li4LU0gMQVvq/crEAC4K8jd2kKazCifOv0FkdvpapBbsMCc91FkojVDnH0M+18nzrzLfy2zQOjgaD8WjIWzCMf4LxLwf3B/142I/ejHq7L9+1Xq6yh+wR2Qx2a7BXbYxMm2Ht2ya7Yh+Bj8CX4GnxrpZ2gvdkD9kd0Vr4DiDayFA=</latexit>

v(t) = w0v0 + w1v1

<latexit sha1_base64="9G4ga0tj1FeXlRl0XGdavQyjfUI=">ACRXicbZDNbhMxEMdny1cJUNL2yKEWEagImt1NIjUXRKVKFQcORSJtpSKvM5sa9X2bu3Z0GhViQtPwxWegWfgIZB6QFzB2QXE10i2f/Plsf9JrqSjKPoULF25eu36jeWbjVu376zcba6uHbisAIHIlOZPUq4QyUNDkiSwqPcIteJwsPkdHeRP5yhdTIzr2ie41jzYyNTKTj50KS5MZrNukRe/iUvZ5EzHt+f+w5rjieNFtRO6qM/QvxD2g9u4TK9ierwcpomolCoyGhuHPDOMrpSarwzIxLbkKhReNUeEw5+KUH+PQo+Ea3bis/nPBHvjIlKWZ9csQq6K/d5RcOzfXia/UnE7c37lF8H+5YUFpf1xKkxeERtSD0kIxythCHDaVFgWpuQcurPRvZeKEWy7IS9gYVY1lOHDeC53V4QuZWG7nIeG5TkNphCqmGPq5Vp5vzfxV/jeVgr1Op9/rshq68U/o/1LwoNOu+3oZa+1s/em1nIZ7sF92IQYtmEHnsM+DEDAW3gH7+FD8DH4HwJvtalS0F9wjr8YcG37w7YsNU=</latexit>

sin α w1 = sin β w0 = sin(π − ψ) 1 = sin ψ

<latexit sha1_base64="LPsORrBFyesAOzn8gScsBoz6I=">ACfXicbVBdaxNBFL3Z+lGj1rQ+jIYKhXa7G4SaF7EgiA+FDBNIVsCLOTu83QmdlxZrY2LAv+MX+Iz74q+A90sqsSPy4Mc+4592PmpFpw6LoUyvYunHz1u3tO+279+7vPOjs7p3ZvDAMxywXuTlPqUXBFY4dwLPtUEqU4GT9PLFWp9cobE8V2/dSuNM0gvFM86o89S8M0kyQ1mZWK5IQoVe0qp8P48r8uQZ2ZRSdLUSVWRTOEg0P0q05U+rMq4lT67zeacb9aI6yL8g/gm6z79BHafz3dZOshZIVE5Jqi10zjS7jAT+E7NSmocZwKrdlJY1JRd0guceqioRDsrax8qsu+ZBcly49ypGY3O0oqrV3J1FdK6pb2b21N/k+bFi4bzUqudOFQsWZRVgjicrI2lSy4QebEygPKDPdvJWxJvUnOW9O6sYyHFufhdbI8DVPDTWr0OG1zEKumCgWGPq9hl8fXflR/je1g8N+fzQckAYM4l9g9NvBs34vHvSiN8PuycsPjZfb8AgewHEcAwn8ApOYQwMPsJn+AJfW9+D/eAw6DWlQau54SH8EcHxD5DUxbo=</latexit>

w0 = sin β/ sin ψ w1 = sin α/ sin ψ

<latexit sha1_base64="H7sHSKa8YpHtsa2lgdFWMIZa35s=">ACXicbVDLbhMxFHWmLZShBQWLqxiEAsIDOTRGo2FZWQUBcsikTaSplodMe501i1PYPtaRuNKvEjfA1b+ABW/YV+As5MacvjSpaPz7kP35MWghsbhj9b3srq2r376w/8hxuP2o87m08OTF5qhmOWi1wfpWBQcIVjy63Ao0IjyFTgYXrybqkfnqI2PFef7KLAqYRjxTPOwDoq6WyfJSF9uUNjw1WcoWgRoXhceyfJdGNBqKY34p+0umGvbAO+i+IrkH37RWpYz/ZbLXjWc5KicoyAcZMorCwrzOBn9W0Am05E3jhx6XBAtgJHOPEQUSzbSq97ygLxwzo1mu3VGW1uzdigqkMQuZukwJdm7+1pbk/7RJabPRtOKqKC0q1gzKSkFtTpem0RnXyKxYOABMc/dXyuagVlnrR/XhVUwNu4VGC2DzVoBeBxXOZBVwxUc4wcHM1P39z6lq5bWoHh/3+aDigDRhEv8HoxsGDfi8a9MKPw+7u+y+Nl+tkizwnr0hEtsku2SP7ZEwY+Uq+ke/kR+vSW/M2vHaT6rWamzwlf4T37BeDIbdx</latexit>

v(t) = v0 sin β + v1 sin α sin ψ

<latexit sha1_base64="DpaeOUhVC6f9Wyro0hZRtAXmIU=">ACZXicbVBNb9NAEN2YrxJoSQviwoEVEaioENtJHJBrYSEOHAoEmkrxVE03oybVdrd3cNbIi8Wf4NVzhwC/gyk9gbRfE10irfe/NzM7Oi3MlLQXB15Z35eq16zc2brZv3d7cutPZ3jmyWEjkWmMnMSg0UlNY5JksKT3CkscLj+OxVlT9eorEy0+9pleM0hVMtEymAnDTr7EfL5S495U9e8igxIErHZwGPrNQ8ipGA7/FKCi8lUPkC1mVFotzK9azTDXpBHfxfEF6C7v53VsfhbLu1Fc0zUaSoSiwdhIGOT1LFJ7raQmGpFC4bkeFxRzEGZzixENKdpWe+75o+dMudJZtzRxGv194SUmtXaewqU6CF/TtXif/LTQpKRtNS6rwg1KIZlBSKU8Yr8/hcGhSkVg6AMNL9lYsFONvIWdyO6sbSH1vHfGtS/62MDZiVT3iRJr7UQhVz9N1cIy+eL91TbpvawWG/PxoOeAMG4U8w+uXgUb8XDnrBu2H34PWHxsN9oA9YrsZC/YAXvDtmYCfaRfWKf2ZfWN2/Tu+fdb0q9VnOzu+yP8B7+AEMCuyg=</latexit>
slide-26
SLIDE 26
  • Spherical linear interpolation naturally works in any dimension
  • Traverses a great arc on the sphere of unit quaternions

– Uniform angular rotation velocity about a fixed axis

  • When angle gets close to zero, estimation of ψ is inaccurate

– switch to linear interpolation when q0 ≈ q1.

  • q is same rotation as –q

– if q0⋅q1 > 0, slerp between them – else, slerp between q0 and –q1

ψ = cos−1(q0 · q1) q(t) = q0 sin(1 − t)ψ + q1 sin tψ sin ψ

Quaternion Interpolation

slide-27
SLIDE 27
  • One jump farther down the rabbit hole: combine

quaternions with dual numbers

  • Result is an algebraic system in which elements have 8

degrees of freedom (like quaternions have 4)

  • Unit-norm dual quaternions have two constraints, so they

constitute a 6D subspace

  • Just as rotations can be identified with quaternions, both

rotations and translations can be identified with dual quaternions

  • Both linear quaternion interpolation and Slerp have

analogues for dual quaternions, with similar properties

Dual quaternions

slide-28
SLIDE 28
  • Real numbers plus a dual unit “ε” with the multiplication

rule that ε2 = 0

  • There is a conjugation for dual numbers
  • Some quirky algebraic features (ex: verify!)

Dual numbers

(a + ✏b)(c + ✏d) = ab + ✏(bd + ad)

<latexit sha1_base64="s1iLrcUzh7NIO/Z+GjleC1spBA=">ACYXicbVBNTxsxEHW2X5C2NAjF4uoUqK2d0kUiNVFUhcWokDlQgJVE09s6Che3d2l5EtOLH9Nf0CkfO/AF+As6GVmnLSJbevJk343ksl8K6KLqpBU+ePnv+YmW1/vLV67U3jfWNQ5sVhuOQZzIzxwsSqFx6ISTeJwbBMUkHrGz3Xn96ByNFZk+cLMcJwpOtEgFB+epaeNzC+h7OsbcCplpytq0xZeJpE2/UGDLVIslPoWkPW0o05UBf0fxA+guX1HqtifrtfWxknGC4XacQnWjuIodx9SiT/0pATjBJd4WR8XFnPgZ3CIw81KLSTsr1kr7zTELTzPinHa3YZUJytqZYr5TgTu1/9bm5GO1UeHSwaQUOi8car5YlBaSuozOjaOJMidnHkA3Aj/V8pPwQB3t76uBKW4dD6LRGhXuCGTCz0OGFSkOhuSwSDP1eIy4+nvtR/prKwX63O+j36AL04t9g8MfBw24n7nWi7/3mzreFlWSFbJIt0iIx+UR2yFeyT4aEk5/kF7ki17XbYDVoBuL1qD2oHlL/opg8x7A0rXT</latexit>

(a + ✏b)∗ = a − ✏b

<latexit sha1_base64="gP78C+e+pZy/vtHm/wJndQ5v/0=">ACSXicbVBdTxNBFL1b5MOqfOgjLxMbElTo7rZN6IuBxBdJfMDEAklbyd3pXZgwM7vMzBKaDT/AX8Mr/gZ/gf9C34hPTrdIQL3JGfOXfu3JPkUlgXRd+D2syj2bn5hcf1J0+fLS4trzft1lhOPV4JjNzmKAlKT1nHCSDnNDqBJB8npu4l+cE7Gikx/cuOchgqPtUgFR+epo+XGOrI3bEC5FTLTLHn1+TV7y5Bt3uO8K2pGVbF/QXwLGts/oKq9o5VgcTDKeKFIOy7R2n4c5W4jlXSmhyUaJ7iky/qgsJQjP8Vj6nuoUZEdltVOl2zNMyOWZsYf7VjF3u8oUVk7Vol3KnQn9m9tQv5P6xcu7Q5LofPCkebTQWkhmcvYJCA2Eoa4k2MPkBvh/8r4CRrkzsdYH1SNZdiz/hZao8IPIjFoxqGjC5WGQnNZjCj0c4242Dz3T/ltqgQ7rVa302ZT0I7/gO5dgvutZtxuRh87jZ3daZSwAKvwEtYhi3YgfewBz3g8AWu4Bq+Bt+Cn8FN8GtqrQW3PS/gQdVmfgNVzrEK</latexit>

ˆ a∗ˆ b∗ = (ˆ aˆ b)∗

<latexit sha1_base64="UClHcYAbAJ9eW6CIh8m7xnOS8=">ACTnicbZDNbhMxEMdnw0dDgDaFYy8WEVKpILubRCIXRKVeQOJQJNJWStLI68w2Vm3v1p6tGq3yCjwNV3gGrwFJ24InE2K+BrJ0s/mfF4/kmupKMo+hLUbty8dXujfqdx979za3m9oMjlxVW4EBkKrMnCXeopMEBSVJ4klvkOlF4nJwfLPHl2idzMw7muc41vzMyFQKTl6aNHdHM04lX5zusYqSJb1g1/Jae3K6N2m2onZUBfsX4jW0Xn6FKg4n28HmaJqJQqMhobhzwzjK6Wmq8MKMS25JCoWLxqhwmHNxzs9w6NFwjW5cVost2GOvTFmaWX8MsUr9vaPk2rm5Tnyl5jRzf+eW4v9yw4LS/riUJi8IjVgNSgvFKGNLl9hUWhSk5h64sNL/lYkZt1yQ97IxqhrLcOD8LXRWh29kYrmdh4RXOg2lEaqYujnWn17NI/5bepHOx1Ov1el62gG19D/5eDR5123G1Hb3ut/dcrK6EO/AIdiG57APr+AQBiDgPXyAj/Ap+Bx8C74HP1altWDd8xD+iFr9J/XetOw=</latexit>

1 a + ✏b = 1 a − ✏ b a2

<latexit sha1_base64="C8bfMQFXJvjAFpfhrze/pjEx0Bs=">ACZHicbVDLThsxFL0Z+oCU0gBihVRZjZAqtWRmkhkw0PqhkpdUKkBpEwaeZw7YGF7BtuDiEbzN/2abumP9A1n4AzQ+nzSpaOz/G51/fEmeDGBsH3hrfw6PGTp4tLzWfLz1detFbXjk2a4ZDlopUn8bUoOAKh5ZbgaeZRipjgSfxbu5fnKF2vBUfbKzDMeSnimecEatoyatvSjRlBVhWVDyhkSYGS5SReKS7JfUkm2H7SajR37uVtOWu2gE1RF/gXhPWjv30JVR5PVxko0TVkuUVkmqDGjMjs20TgpRoXVFvOBJbNKDeYUXZBz3DkoKISzbio1i3JlmOmJEm1O8qSiv3dUVBpzEy6HbYktefmb21O/k8b5TYZjAustyiYvWgJBfEpmSeHZlyjcyKmQOUae7+Stg5dXFYl3AzqoyFPzTu5hst/Q81lTPfIvXMvG5YiKfou/man69feVauW2qBPvd7qDfIzXohT/B4CHB424n7HWCj/32wfs6SliETXgFryGEHTiAQziCITD4Al/hBr41fnjL3rq3UT/1GvedfijvJd3B9q7LQ=</latexit>

√ a + ✏b = √a + ✏ b 2√a

<latexit sha1_base64="3PJnUdNky6D4cFzGKyHjcmOM2/0=">ACYnicbVBNTxsxEHWQmnKR0KP7cFqhFQJyO4mkZoDqEi9tFIPVCKAlI0irzMLFrZ3sWcR0Wr/TH9Nr+2t9/6A/oQ6mwQhYCRLb97z83henElhMQj+1LyVF6trL9df1V9vbG5tN5o7ZzbNDYcBT2VqLmJmQoNAxQo4SIzwFQs4Ty+/jzTz2/BWJHqU5xmMFLsUotEcIaOGjcOI3tjsGB7EWRWyFTuKRHdMGWdI8uhSgxjBdxWXSWYjlutIJ2UBV9CsIFaH36R6o6GTdrW9Ek5bkCjVwya4dhkOF+IuFGjwpmUHAJZT3KLWSMX7NLGDqomQI7KqplS7rmAlNUuORlqxDx0FU9ZOlVtjVzG8so+1GfmcNswx6Y8KobMcQfP5oCSXFM6S45OhAGOcuoA40a4v1J+xVwo6PKtR5Wx8AfWdb41yv8mYsPM1Ee4U4kvNJf5BHw314i7g1v3lNumSrDX6fR7XToH3XAJ+vcJnXaYbcdfO+1jr/OoyTr5C15Tz6QkHwkx+QLOSEDwskP8pP8Ir9rf7261/TezK96tYVn0S/Le/cfpF27oQ=</latexit>

caution: my notation for the two
 conjugations is swapped from Kavan et al.

slide-29
SLIDE 29
  • A d.q. is a quaternion built from dual numbers
  • A d.q. is also a dual number built from quaternions
  • Either way there are 8 components

– and three ways to conjugate

Dual quaternions

ˆ q = ˆ w + iˆ x + jˆ y + kˆ z

<latexit sha1_base64="A1V4Mva5aDeseu9FVWlyrshvlSk=">ACWHicbZDNbhMxEMcny0fbACUtRy4WERISkN1NIpFLRSUuIHEoEmkrJVHkdWYbN7Z3a3vbLKt9D56GK7wCPAWPgNcpiK+RLP38nxmP5/kghsbRV9bwY2bt25vbe+079y9t3u/s7d/bLJCMxyzTGT6NKEGBVc4twKPM01UpkIPElWr5r8ySVqwzP13pY5ziQ9UzljFonzTv96ZLa6qImB8TVU2eEu5x3eC5x7LBlcP9bzTjXqRD/IvxNfQfkdfBzN91q70XGConKMkGNmcRbp+lAi/UrKLaciawbk8LgzlK3qGE4eKSjSzyq9Yk8dOWZA0+4oS7z6e0dFpTGlTFylpHZp/s414v9yk8Kmo1nFV5YVGwzKC0EsRlp/CILrpFZUTqgTHP3V8KWVFNmnavtqW+swrFxt9BoGb7lia6DC2uZRpyxUSxwNDN1Xz9/NI95bxDg7/dFwQDYwiH/C6JeDx/1ePOhF74bdwzcbK2EbHsIjeAIxvIBDeA1HMAYGH+ETfIYvrW8BFvBzqY0aF3PIA/Itj/AVpAtic=</latexit>

ˆ q = q + ✏q0

<latexit sha1_base64="leb6pZ6CUw9LSs0oZFgCbSX4VKs=">ACP3icbVBNbxMxEJ1t+SgBSlpOiItFhEACsrtJpOZSUYkLSByKRNpK2SjyOrONVdu7sWerRquIX8O1/Q38DH4BN8SVG84mIL5GsvT8nt+M56WFko6i6HOwsXnt+o2bW7cat+/c3b7X3Nk9cnlpBQ5ErnJ7knKHShockCSFJ4VFrlOFx+nZq6V+fI7Wydy8p3mBI81Pjcyk4OSpcfNBMuVUzRZsn83YM5Zg4aTKDZs9GTdbUTuqi/0L4jVovfwGdR2Od4LtZJKLUqMhobhzwzgq6HmcGZGFbckhcJFIykdFlyc8VMcemi4Rjeq6k0W7LFnJizLrT+GWM3+7qi4dm6uU/9Sc5q6v7Ul+T9tWFLWH1XSFCWhEatBWakY5WwZC5tIi4LU3AMurPR/ZWLKLRfkw2sktbEKB87fQmd1+Famlt5SHihs1AaocoJhn6ulRcvzn0rv02dYK/T6fe6bAW68U/Q/5XgUacd9vRu17r4M0qStiCh/AInkIMe3Ar+EQBiDgA3yES7gKPgVfgq/BOvaNYO25D39U8P0Ht5Ovbg=</latexit>

ˆ q = w + ix + jy + kz + ✏w0 + i✏x0 + j✏y0 + k✏z0

<latexit sha1_base64="bOIUDYK4yJCrytHgtOwEPJMadc=">ACe3icbVBNT9swGHazLygbK+y4i7UKMa2sSdqi9TINaRcm7cCkBZCaqnLcN9TUdoLtQEPUX8Yv2XHXceEPIM1JWTXYXsnW8/G+/nilDNtPO9HzXn0+MnTZyur9bXnL9ZfNjY2D3WSKQoBTXijiOigTMJgWGw3GqgIiIw1E0/Vz6R+egNEvkd5OnMBTkRLKYUWKsNGoE4YSY4myOP+IL3MJsZrfTvIWnl7hVxyGkmvFE4ovt0lzSWUlPlzQv6XRJL7dHjabX9qrC/wL/DjQ/3aCqDkYbtfVwnNBMgDSUE60HvpeanZjDmRwWRBlGOczrYaYhJXRKTmBgoSQC9LCoUpjLauMcZwou6TBlfr3REGE1rmIbKcgZqIfeqX4P2+Qmbg/LJhMwOSLi6KM45NgstI8ZgpoIbnFhCqmH0rphOiCDU2+HpYDRZuoC1ztRLuVxYponLXwEzELpOUZ2Nw7b2Kzd6f26Psb6oEe51Ov9fFC9D1/4D+MsHDTtvtr1vebel0WUaAW9Rm/QW+SjD2gP7aMDFCKrtBP9Atd126dpvPO2Vm0OrW7mVfoXjm7vwHC8Br</latexit>

ˆ q⇤ = w + ix + jy + kz − ✏w0 − i✏x0 − j✏y0 − k✏z0

<latexit sha1_base64="UCfeGz18/YkpG1/JlYW4jSJFpwI=">ACfXicbVBdb9MwFHUzPkaBrYNHXq6opiG2NklbaX2ZmMQLSDwMia6TmlI57s3q1XEy29maRf1p/BCeQWJfwBOiq+rmTrnHO/7BOmgmvjeZ9rzsadu/fubz6oP3z0eGu7sfPkVCeZYjhgiUjUWUg1Ci5xYLgReJYqpHEocBjOX5f54RUqzRP5weQpjmN6LnEGTVWmjSGwYya4nL58SUcwTXsA1/Y6yLfh/kNtOoQYKq5SCRc70EL+JouSnqxpnlJ52t6szdpNL2VwX8C/xb0Hz1nVRxMtmpbQXThGUxSsME1Xrke6k5iAReynFBleFM4LIeZBpTyub0HEcWShqjHheVD0vYtcoUokTZIw1U6u8dBY21zuPQVsbUzPTfuVL8X26Umag/LrhM4OSrRZFmQCTQGkqTLlCZkRuAWK27cCm1FmbHW14OqsXAH2jJXq9h9x0NFVe4aXMSRyUT2Rdu1fxRevKjrK/qRzsdTr9XhdWoOv/Av21g6edt9te+97zeO3KyvJnlGnpMXxCeH5Ji8ISdkQBj5RL6Qr+Rb7Yez6xw47VWpU7vteUr+COfwJzt5wQ8=</latexit>

ˆ q⇤ = w − ix − jy − kz − ✏w0 + i✏x0 + j✏y0 + k✏z0

<latexit sha1_base64="Ibi9O8RCaUNZsYNwy5/G4XprdQ=">ACiXicbVFdb9MwFHUzPkYHWzcebGo0BDQJmkrUSEhJu0FJB6GRLdJTakc92b16o/MdrZmUX/gfsJ+BTytznpqPi6kq1z7r3H1z6OU86MDYLrmrd27/6Dh+uP6huPn2xuNbZ3Do3KNIUBVzp45gY4EzCwDL4TjVQETM4Sie7Zf1o3PQhin51eYpjAQ5kSxhlFiXGjdopFy5VBfRlNjibPHt1QK/xe4hdncbae52aXuFXHEaSGcSXxS5+jdmKzkt6uqJ5SWcrerk7bjSDdlAF/heEd6D54Qeq4mC8XduMJopmAqSlnBgzDIPUvk4nMlRQbRlMOiHmUGUkJn5ASGDkoiwIyKypMFfuEyE5wo7Za0uMr+riIMCYXsesUxE7N37Uy+b/aMLNJf1QwmWYWJF0OSjKOrcKlwXjCNFDLcwcI1czdFdMp0YRa9w31qBIW/sA45hst/M8s1kTnvoW5SHwmKc8m4Lu5ms1b5+4o95rKwV6n0+918RJ0w1+gv3LwsNMOu+3gS6+592lpJVpHz9Bz9BKF6C3aQx/RARogiq7Qd/QT3XgbXuj1vXfLVq92p3mK/ghv/xYhG8Vg</latexit>

ˆ q = w − ix − jy − kz + ✏w0 − i✏x0 − j✏y0 − k✏z0

<latexit sha1_base64="XJUQeLrU4z/YH/HDg/73xHidHjM=">ACh3icbVHLThsxFHWmDyBtIdAlG6tRaWzEwSQTZVQd1QqQsqNYCUiSKPc4eY+DHYHsgwyvfxDXxEpa7Ktp4Jjfq6kq1z7rnX1z6OU86MDYK7mvfo8ZOnK6tr9WfPX6xvNDa3TozKNIU+Vzps5gY4ExC3zL4SzVQETM4TSefiz10yvQhin51eYpDAU5lyxhlFiXGjVIpJxcdhfRhNjicj7H7/E13sVs5raL3G3TG/y2jiNIDeNK4udUl3SWUkvljQv6XRJb3ZGjWbQCqrA/4LwATQ/fEdVHI82a+vRWNFMgLSUE2MGYZDadwmHSzksiLaMcpjXo8xASuiUnMPAQUkEmGFROTLHr1mjBOl3ZIWV9nfOwoijMlF7CoFsRPzt1Ym/6cNMpv0hgWTaWZB0sWgJOPYKlzai8dMA7U8d4BQzdxdMZ0QTah1n1CPqsbC7xvHfKOF/5nFmujctzATic8k5dkYfDdXs9nulTvKvaZysNtu97odvACd8BfoLR08abfCTiv40m0efFpYiVbRNnqF3qAQ7aMDdISOUR9RdIu+oR/o3lvzfG/P6y1KvdpDz0v0R3iHPwG0U8TI</latexit>
slide-30
SLIDE 30
  • Norm of a d.q. is defined as
  • This is a dual number, so being a unit dual quaternion

requires satisfying two separate constraints:

Unit dual quaternions

kˆ qk2 = ˆ qˆ q = (q + ✏p)(¯ q + ✏¯ p) = q¯ q + ✏(p¯ q + q¯ p) = kqk2 + 2✏(q · p)

<latexit sha1_base64="T/I85w6wPrvkNeUJ+n0tc3OZJlU=">ACzXicbVHdbtMwFHYyfkZgo4NLbiwqUKdB89NK9GIVk7gBCYkh0W1SXSrHcVZrjp3YzrQqDbc8Cs/EW/AIuGk7BuNIlr7zfefP58Q5Z9oEwU/H3bpz9797Qfew0c7u49be09OtCwVoSMiuVRnMdaUM0FHhlOz3JFcRZzehpfvFvqp5dUaSbFzP6STD54KljGBjqWnrB1qgGTZVUaPF1wi+HMKNK23asmq1Jmo4hJ0CHkBEc824FDf76AYK6vdYBsmr/e9ISxuq538D1dsQiFC3rLxomhmOIDRdXiBSCKN7TRtYNu0Bi8DcI1aL/9BRo7nu45uyiRpMyoMIRjrcdhkJtXKaeFmFRYGUY4rT1UapjcoHP6dhCgTOqJ1Wz1xq+sEwCU6nsEwY27M2MCmdaz7PYRmbYzPS/2pL8nzYuTqYVEzkpaGCrBqlJYdGwuWRYMIUJYbPLcBEMTsrJDOsMDH2lB5qEit/pK3na5X5H1msJr7hl5lqc8E4WVCfdtXsavXl7aU/U2zwX4UDfo9uAK9cAMG1xs8ibphrxt87rePqxWCbBM/AcdEAI3oAj8B4cgxEgzo7Tcw6dofvJLd2F+20V6jrnKfgL3O/wbrU95U</latexit>

kqk = 1 q · p = 0

<latexit sha1_base64="mJdmQ3pkFlwoBzstoR06HS9KOzw=">ACQXicbVBNbxMxEJ0tX2AksKxF4sIxAGyu0mk5lJRiUuROBSJtJWyUeT1zrZWbe/Gnq0abXvg13CF38Cv6E/oreLKBWdTEF8jWXp+b57H89JSUdRdBms3Lp95+691bXW/QcP1x+1Nx7vu6KyAkeiUIU9TLlDJQ2OSJLCw9Ii16nCg/TkzUI/OEXrZGE+0LzEieZHRuZScPLUtL2ZnM+Sc/Z8m8UsSVqzRGQFsXJBRN2J+pGTbF/QXwDOq+voam96UawnmSFqDQaEo7N46jkl7mCmdmUnNLUi8aCWVw5KLE36EYw8N1+gmdbPLBXvmYzlhfXHEGvY3x0187Ndeo7Nadj97e2IP+njSvKh5NamrIiNGI5K8Uo4ItgmGZtChIzT3gwkr/VyaOueWCfHytpDHW4cj5W+isDt/J1HI7DwnPdB5KI1SVYejnWn26tQ/5bdpEhz0esNBny1BP/4Jhr8S3O914343ej/o7LxdRgmrsAlP4QXEsAU7sAt7MAIBH+ETfIYvwdfgKrgOvi1bV4IbzxP4o4LvPwDRq7K</latexit>
slide-31
SLIDE 31
  • For transformation by dual quaternions, interpret the

vector v as a pure imaginary quaternion and represent it as a dual quaternion of the form
 
 
 and apply a transformation as with quaternions but using double conjugation:

  • Transformation by an ordinary quaternion goes through:

Dual quaternion transformation

ˆ v = 1 + ✏v

<latexit sha1_base64="Wg1s+YWExuHVQ41iKDueWOy920=">ACQXicbVDBbhMxEJ0tFEqANoVjLxYREhJtdjeJRC6ISlxaiUORSFspG0VeZ7axansXezZqtMqBr+EK38BX9BO4Vb1ywdkUBIWRLD2/N8/jeWmhpKMougzW7txdv3d/40Hj4aPHm1vN7SfHLi+twIHIVW5PU+5QSYMDkqTwtLDIdarwJD1/u9RPZmidzM0Hmhc40vzMyEwKTp4aN3eSKacqmc0W7DWL2UuWYOGkyo2nxs1W1I7qYv+C+Aa03lxBXUfj7WAzmeSi1GhIKO7cMI4K2s0UfjSjiluSQuGikZQOCy7O+RkOPTRcoxtV9S4L9twzE5bl1h9DrGb/dFRcOzfXqe/UnKbutrYk/6cNS8r6o0qaoiQ0YjUoKxWjnC2DYRNpUZCae8CFlf6vTEy5YJ8fI2kNlbhwPlb6KwO38nUcjsPCS90FkojVDnB0M+18mJv5p/y29QJ9jqdfq/LVqAb/wL93wked9pxtx297X2D1dRwgbswDN4ATG8gn04gCMYgIBP8Bm+wNfgW/A9uAquV61rwY3nKfxVwY+fGlGwqQ=</latexit>

ˆ v 7! ˆ qˆ vˆ q∗

<latexit sha1_base64="OH/4TnvpMGMqoBbPAjYHiHAdyY=">ACXHicbVDdShtBFD5ZbWtj1ajQm94MDYVS2uxuEmruFLxR6IVCo0I2DbOTs2ZwZnadmQ2GZd/Ep+ltfYHe9Bl8BCebKP07MPCd7zs/c74E9zYIPhZ81ZWnz1/sfayv5qY3Orsb1zZtJcM+yzVKT6IqYGBVfYt9wKvMg0UhkLPI+vDuf6+RS14an6amcZDiW9VDzhjFpHjRqfowm1RTSdliSNDM2JRVzXT4JUeoGzOcXS+Xbh3LUaAatoAryLwiXoLl/D1WcjLZrm9E4ZblEZmgxgzCILMfE4HXalhQbTkTWNaj3GBG2RW9xIGDiko0w6I6syTvHDMmSardU5ZU7O8dBZXGzGTsKiW1E/O3Nif/pw1ym/SGBVdZblGxaIkF8SZMfeMjLlGZsXMAco0d38lbEI1ZdY5W4+qxsLvG5f5Rkv/C481TPf4o1MfK6YyMfou72a3yaulHumsrBbrvd63bIAnTCR9B7cvCs3Qo7reC02zw4XlgJa/AG3sJ7CGEPDuAITqAPDG7hO/yAu9ovb9Vb9zYWpV5t2bMLf4T3+gGHCLpR</latexit>

ˆ v 7! q(1 + ✏v)¯ q = q¯ q + ✏qv¯ q = 1 + ✏qv¯ q

<latexit sha1_base64="i6PzxXL8eyRX09ekGEHkAxisZg=">ACj3icdVFNbxMxFHSWAiVAm8CxF6sRUhGQ3U0iNRcgEpdW6qFIpK2UjaK3ztvGqu3dtb1Ro1V+I2f+BZdeoc6mLeXrSZbGM/P87HGcCW5sEHyreQ82Hj56vPmk/vTZ863tRvPFiUkLzXDIUpHqsxgMCq5waLkVeJZpBkLPI0vPq30zlqw1P1xS4yHEs4VzhDKyjJg0ezcCW0Xy+pJGEzNiU5nshfUMjzAwXqaJOex3FoMt8Sd/T/Bbec+TO8sR/keaNFpBO6iK/g3CG9D6+J1UdTxp1raiacoKicoyAcaMwiCzbxOBuRqXoC1nApf1qDCYAbuAcxw5qECiGZdVMkv6yjFTmqTaLWVpxd7vKEas5Cxc0qwM/OntiL/pY0Km/THJVdZYVGx9aCkENTlt4qZTrlGZsXCAWCau7tSNgMNzLrPqEdVY+kPjdv5Rkv/iMca9MK3eCkTnysmin6bq7ml+/m7ij3mirBXqfT73XpGnTDW9C/S/Ck0w67eBzrzU4XEdJNskO2SV7JCT7ZEAOyDEZEka+kivyg/z0mt6+98EbrK1e7abnJfmtvMNr3YrLBw=</latexit>
slide-32
SLIDE 32
  • Idea: represent translation as a d.q. with unit ordinary part
  • This works but translates by 2x so we represent a

translation by w as – is this still a unit d.q.? yes: unit ordinary part; ordinary and dual parts orthogonal.

Translation as dual quaternion

v 7! ˆ tvˆ t∗ = (1 + ✏x)v(1 + ✏x) = v + 2✏x

<latexit sha1_base64="YJK0CZSmuZW2QW6rqodY9ljIV3A=">ACj3icbVFdb9MwFHUzPkaBrR2PvFhUSINBk7SV1hegEi9M4mFIdJvUlMpxb1ZrthPsm6hV1N/IM/+CF14BJy1oMK5k6fjc67t4ziTwmIQfG14O7du37m7e695/8HDvf1W+DMprnhMOapTM1FzCxIoWGMAiVcZAaYiWcx1dvq/5AcaKVH/EVQZTxS61SARn6KhZS0RFQSPFMospjRYMS1zTmkudrZpabtlPz9fNV/QwpEc0gswKmeqoWD5z2huc01UjmjvGjtrdYJuUBe9CcIt6Lz5Ruo6nbUbe9E85bkCjVwyaydhkOGLRMJnPS2ZQcElrJtRbiFj/IpdwsRBzRTYaVkns6ZPHTOnSWrc0khr9rqjZMralYqdUjFc2H97Ffm/3iTHZDgthc5yBM03ByW5pC7FKmY6FwY4ypUDjBvh7kr5ghnG0X1GM6qNpT+2budbo/z3IjbMrHyEpUp8obnM5+C7c41YvizcKPeaOsFBrzc9OkG9MPfYPgnwbNeN+x3gw+DzuhkEyXZJY/JE3JIQnJMRuQdOSVjwskX8p38ID+9tnfsvfZG6nX2Hoekb/KO/kFZcbKQ=</latexit>

ˆ t = 1 + ✏x

<latexit sha1_base64="tBtDgzfqwI7U8OjvyvF+09hzkxA=">ACP3icbVBdaxNBFL3b+tFGrWl9El8GgyCo2d0kYF7Egi8KPlQwbSEbwuzkbjN0ZnaduRsSluCv8V/gz+jv8A38bVvnWyi+HVh4Mw5c+6de9JCSUdRdBFsbV+7fuPmzm7j1u07e3eb+wfHLi+twIHIVW5PU+5QSYMDkqTwtLDIdarwJD1/tdJPZmidzM17WhQ40vzMyEwKTp4aN+8nU04VLdkLFrMnLMHCSZWbZDYfN1tRO6qL/QviDWi9/AF1HY3g71kotSoyGhuHPDOCroabwgxlV3JIUCpeNpHRYcHOz3DoeEa3aiqN1myR56ZsCy3/hiNfu7o+LauYVO/UvNaer+1lbk/7RhSVl/VElTlIRGrAdlpWKUs1UsbCItClILD7iw0v+ViSm3XJAPr5HUxiocOH8LndXhW5labhch4VxnoTRClRM/Vwr589mvpXfpk6w1+n0e12Bt34J+j/SvC40467ehdr3X4Zh0l7MADeAiPIYbncAiv4QgGIOAjfILP8CX4GnwLvgeb2LeCjece/FHB5RVJ7a/D</latexit>

ˆ t(w) = 1 + ✏w 2

<latexit sha1_base64="mgIRdUMdeDh+40KvM3u3lzG7zZw=">ACTnicbVBNbxMxEPWGAmAktIjF6sRUhCQ3U0iNRfUSlyoxKGVSFspG0VeZ7axanu39mxotNq/0F/TK/yGXvkXnLhV1NkUxNdIlp7fm+fxvDiTwmIQfPVq9buP3hYX28evxk42lz89mRTXPDYchTmZqTmFmQsMQBUo4yQwFUs4js/eLfXjORgrUv0RFxmMFTvVIhGcoaMmzXY0Y1hg2Y7mn17StzSkr2iUGMaLCDIrZKqdUBbdctJsBZ2gKvovCO9Aa/cbqepgsultRNOU5wo0csmsHYVBhq8TCed6XDCDgksoG1FuIWP8jJ3CyEHNFNhxUS1W0heOmdIkNe5opBX7u6NgytqFil2nYjizf2tL8n/aKMdkMC6EznIEzVeDklxSTOkyJToVBjKhQOMG+H+SvmMuVjQZdmIKmPhD627+dYo/4OIDTMLH+FCJb7QXOZT8N1cIy7ezN1TbpsqwX63O+j36Ar0wp9g8CvBo24n7HWCw35rb38VJamT52SbtElIdsgeU8OyJBwckmuyGfyxbv2vns3o9Va82782yRP6pWvwUi8rUN</latexit>
slide-33
SLIDE 33
  • Given a translation



 
 represent R and w as dual quaternions
 
 
 
 and T is represented by the product

Rigid motion as dual quaternion

T(v) = Rv + w

<latexit sha1_base64="1T87WXtgMfKLSJDqS+fvjylCy0=">ACOXicbVBNTxsxEJ2ltEDaQoAjF4uoElXb7G4SiVyqIvVCpR6gIoCUjSKvMxsbO9ie7esVvyWXtvf0F/SI7eKE1L/AM6GVv0ayfLzm3kznhdnghsbBN+8hQeLDx8tLa80Hj95urWXN84NmuGQ5YKlJ9GlODgiscWG4FnmYaqYwFnsTnb2f5kwK14ak6smWGI0mniecUeuocXPzaCcqiufkNfngbvKCRMXHcbMVtIM6yL8gvAetN7dQx8F43VuNJinLJSrLBDVmGAaZfZkIvFCjimrLmcCrRpQbzCg7p1McOqioRDOq6h2uyDPHTEiSaneUJTX7u6Ki0phSxq5SUntm/s7NyP/lhrlN+qOKqy3qNh8UJILYlMyM4RMuEZmRekAZq7vxJ2RjVl1tnWiGph5Q+Me/lGS/89jzXVpW/xUiY+V0zkE/TdXM0vXxWuldumdrDX6fR7XTIH3fAn6P9y8LjTDrvt4LDX2ns3txKWYQu2YQdC2IU92IcDGACDEj7BZ/jifWuve/ezbx0wbvXbMIf4f24A+herIE=</latexit>

ˆ tq

<latexit sha1_base64="jnViF2ZFKvIhxrnxbnLP/wR2foY=">ACLHicbVDBThsxEJ2ltKVpS6EcuVhElTjQ7G4SidxA6gUkDlRqIFISIa8zSyxs72LPIqJVfqLX9hv4Gi4Ice25n1BnA6gtjGTp+b15nvFLciUdRdFNsPBi8eWr10tvam/fvV/+sL68chlhRXYFZnKbC/hDpU02CVJCnu5Ra4ThcfJ2ZeZfnyB1snMfKNJjkPNT41MpeDkqd5gzKmk6fnJSj1qRFWxpyC+B/Wd31DV4clqsDwYZaLQaEgo7lw/jnLaShWem2HJLUmhcFobFA5zLs74KfY9NFyjG5bV2lP2yTMjlmbWH0OsYv92lFw7N9GJ79Scxu5/bUY+p/ULSjvDUpq8IDRiPigtFKOMzTJgI2lRkJp4wIWVflcmxtxyQT6p2qAylmHX+VvorA4PZGK5nYSElzoNpRGqGHo51p5+fnCP+V/UyXYbjY7Rabg1b8ADqPCR41G3GrEX1t13f351HCEqzDBmxCDNuwC3twCF0QoOA7/ICfwVwHdwGd/PWheDeswb/VPDrD7L+qaA=</latexit>

q = q(R) ˆ t = ˆ t(w)

<latexit sha1_base64="w30CYzeRG3MSjI3ryFtzbJgGAas=">ACSnicbZDPbhMxEMa9aYE2QJuWYy9WAyiVILubRCIXRKVeisShINJWykaR15ltrNrejT0bGq3yAjwNV3iGvkDfAnFDXOpsAuLfSJZ+/mbG4/niTAqLQXDjVdbW79y9t7FZvf/g4dZ2bWf31Ka54dDjqUzNecwsSKGhwIlnGcGmIolnMWXR4v82RSMFal+j7MBopdaJEIztBJw9rjCX36k4a7w5oFWjMcMC5wtphY1o+uFgWKsHzaAM+i+EK6i/+krKOBnueFvRKOW5Ao1cMmv7YZDhs0TCRA8KZlBwCfNqlFvIGL9kF9B3qJkCOyjKpeb0iVNGNEmNOxpqf7eUTBl7UzFrlIxHNu/cwvxf7l+jkl3UAid5QiaLwcluaSY0oVDdCQMcJQzB4wb4f5K+ZgZxtH5WI3KxsLvWXfzrVH+GxEbZmY+wpVKfKG5zEfgu7lGXD2fuqfcNqWDnVar2nTJbTDn9D95eBpqxm2m8HbTv3w9dJKskH2yD5pkJC8IfkmJyQHuHkI/lEPpMv3rX3zfvu/ViWVrxVzyPyR1TWbwG5YbHF</latexit>

(ˆ tq)v(ˆ tq)∗ ˆ tqvq∗ˆ t∗ ˆ t(qvq∗)ˆ t∗

<latexit sha1_base64="tE28LxYVBmlcVUlM7aFHRqZ6wfY=">ACuHicbVFNb9NAEF2br9ZASekRCa2IgBRBbCeRGnGhUi9F4lAk0laKQ1hvxsmq67WzO4aWfkT/Xf8C4c2TgpSUjrfRm3nszu7NxLoXBIPjpuPfuP3j4aGvbe/zk6c6z2u7zU5MVmkOPZzLT5zEzIWCHgqUcJ5rYGks4Sy+OFryZzPQRmTqG85zGKRsrEQiOENbGtauGtGEYmL6T59E81mNMqsfNmtvG+v1vQKPKu87vCqeVvsrXqtqex0bS/yeUNa/WgGVRB/wfhGtQ/SJVnAx3nZ1olPEiBYVcMmP6YZDj+0TCVA1KplFwCQsvKgzkjF+wMfQtVCwFMyirFS7oa1sZ0ST9ikVfVfR8lSY+ZpbJUpw4m5y2Lm7h+gUl3UAqVFwiKrwYlhaSY0eV/0JHQwFHOLWBcC3tXyidM47217yoMpZ+z9jMNzr1v4hYMz3ES7TxBeKy2IEvp2rxeWHmW1lX1NtsNqdTtugLt8Bp0/27wtNUM283ga6d+Hm1SrJFXpBXpEFCckAOyTE5IT3CyW/npfPWabgf3R/u2BUrqeusPXvkVrj6D/Gg2pY=</latexit>

transforming by this product is the 
 same as transforming by q, then t

slide-34
SLIDE 34
  • A generalization of slerp exists; it corresponds to a

constant-speed screw motion from one location to the next

  • As with quaternions, linear blending with renormalization

provides a ready approximation

– and it generalizes to more blending multiple dual quaternions

  • This is a good way to blend rigid motions for skinning

Blending dual quaternions