Rodrigues formula is beautiful, but uneven to sine and cosine. (zz Berkeley's Page)

Notes originally by Laura Downs and by Alex Berg

CS184: Computing Rotations in 3D


Using the Rodrigues Formula to Compute Rotations

Suppose we are rotating a point, p, in space by an angle, b, (later also called theta) about an axis through the origin represented by the unit vector, a.

First, we create the matrix A which is the linear transformation that computes the cross product of the vector a with any other vector, v.

a x v =
ayvz - azvy
azvx - axvz
axvy - ayvx
=
0 -az ay
az 0 -ax
-ay ax 0
vx
vy
vz
= Av, with A =
0 -az ay
az 0 -ax
-ay ax 0

Now, the rotation matrix can be written in terms of A as

Q = eAb = I + A sin(b) + A2 [1 - cos(b)]


A Geometrical Explanation
Rotation as Vector Components in a 2D Subspace

Suppose we are rotating a point, p, in space by an angle,
b, about an axis through the origin, represented by the unit
vector, a. The component of p parallel to a,
ppar a, will not change during the transformation.
The component of p perpendicular to a, pper a
will rotate about the axis in the plane perpendicular to the axis the same as in 2D
The vectors pper a and pbiper ar
of the correct length and orientation to act as the x and y vectors in this 2D rotation.

p‘ = ppar a + cos(b) pper a + sin(b) pbiper

p‘ = (p + (a x (a x p))) + cos(b) (-(a x (a x p))) + sin(b) (a x p)

p‘ = p + sin(b) (a x p) + [1 - cos(b)] (a x (a x p))

p‘ = (I + sin(b) A + [1 - cos(b)] A2) p



An Algebraic Explanation

Rotation as a Differential Equation

Suppose we are rotating a point, p, in space by an angle, b
(called theta in the formatted equations), about an axis
through the origin, represented by the unit vector, a. We will
form a differential equation describing the motion of the point from
time t=0 to time t=b. Let p(t} be the position of
the point at time t. The velocity of the point at any time is

p‘(t) = a x p(t)

Now, if we use the matrix formula for cross products in our differential equation, we
have a first order, linear system of differential equations,
p‘(t) = A p(t).
The solution to that system is known to be
p(t) = eAtp(0)
so the location of the rotated point will be
p(b) = eAbp(0).

Taylor Expansions

Now we need to evaluate eAb, so we examine its Taylor expansion.

Considering how we constructed A, it is easy to verify that
A^3 = -A
Every additional application of A turns the plane of ppar aA^2 in the
appropriate places, we get

Now, we recognize the Taylor expansions for sin(b) and
cos(b) in the above expression and find that

eAb

= I + A sin(b) + A2 [1 - cos(b)]

with A =
0 -az ay
az 0 -ax
-ay ax 0

gives us the rotation matrix. This formula is known as Rodrigues‘ Formula.



Useful Note
Given an arbitrary rotation matrix, can we find the corresponding rotation axis vecto
and the angle of rotation

Consider R=eAb
then by some algebra based on A =- At we have, R-Rt = 2Acos( b )
Using this and solving for a unit axis, and an angle we can recover
the axis (up to a factor of +/-1) and angle up to a factor of +/- 2pi.

References

  • "A Mathematical Introduction to Robotic Manipulation",
    Richard M. Murray, Zexiang Li, S. Shankar Sastry, pp. 26-28


Rodrigues formula is beautiful, but uneven to sine and cosine. (zz Berkeley's Page)

时间: 2024-11-05 19:45:20

Rodrigues formula is beautiful, but uneven to sine and cosine. (zz Berkeley's Page)的相关文章

Radio Basics for RFID

Radio Basics for RFID (2015/09/24 22:30:37) Radio Basics for RFID (2015/09/24 22:30:37) Radio Basics for RFID (2015/09/24 22:30:37) Radio Basics for RFID (2015/09/24 22:30:37) Radio Basics for RFID (2015/09/24 22:30:37) Radio Basics for RFID (2015/09

Lou's Pseudo 3d Page

Lou's Pseudo 3d Page   (C) 2013 Louis Gorenfeld, updated May 3, 2013 NEW: Important details on the segmented road system and some additional links NEW: An (optional) explanation of finding field-of-view for the 3d projection formula NEW: An analysis

Personal reminder (or CheetSheet) about Fourier Transform

Recently, I'm studying Fourier Transform by watching the lectures from Stanford University. I felt that I already forget the math basics that I've learnt in college. So, to set up a quick lookup table for myself, I decide to write something to memori

计算机专业英语 (三)

计算机专业英语 (三) 第一部分:基本单词 storage n 存储 accessible adj 可访问的 characterize vt 表现...的特色 interpreter n 解释程序,解释器 statement n 语句 module n 模块 procedural adj 过程化的,程序化的 modify v 更改,修改 subsection n 分部,分段,小部分 submodule n 子模块 demonstrate vt 证明,论证 sequence n 顺序 subseq

fedora 安装pylab 并简单绘制三角函数

pylab 由 三个部分组成:scipy, matplotlab, numpy三部分组成,安装时需要分别安装这三部分,在fedora中,可以使用命令: sudo dnf install python-matplotlib python3-matplotlib sudo dnf install scipy python3-scipy sudo dnf install pylab python3-pylab 即可安装. 安装好后,可以简单尝试一下: __author__ = 'emerald' im

CS231n(一):基础知识

给自己新挖个坑:开始刷cs231n深度学习. 看了一下导言的pdf,差缺补漏. s = "hello" print s.capitalize() # 首字母大写; prints "Hello" print s.upper() # 全部大写; prints "HELLO" print s.rjust(7) #空格; prints " hello" print s.center(7) # 居中; prints " hel

图片变换【Matrix】矩阵 简介

Matrix矩阵介绍 官方文档地址:https://developer.android.com/reference/android/graphics/Matrix.html 在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵,内部就是个一维数组,内部有9个元素,可以通过setValues(float[])进行初始化,通过getValues(float[])把拿到的矩阵值赋给传入的数组. 源码中的介绍就一句话:The Matrix class holds

日升有日落

using System; namespace Tools.TimeAbout { /// <summary> /// 日出日落时间类 /// </summary> public static class SunTimes { #region 公共方法 /// <summary> /// 计算日长 /// </summary> /// <param name="date">日期</param> /// <pa

Matlab_Graphics(1)_2D

1.Add title ,axis Lables, and Legend to Graph: 1 x=linspace(-2*pi,2pi,100); 2 y1=sin(x); 3 y2=cos(x); 4 figure 5 plot(x,y1,x,y2); 6 title('Graph of sine and cosine between -2\pi and 2\pi');% to display Greek symbols in a title,use the tex markup '\'