# Linear speed of a rotating sphere

1. Jul 4, 2014

### tahsphere

1. The problem statement, all variables and given/known data
Hello everyone.
Each minute, I have 3d coordinates of points at the surface of a unit sphere (with center at (0;0;0)) rotating with an axis which can (slightely?) change over time. I want to know the linear speed (s) of this sphere. I don't know how to find r at each time.

2. Relevant equations

$s=r*\omega$

with $\omega =$ angular speed

3. The attempt at a solution

I found solutions which doesn't imply directly r :

$\cos{s} = \cos(\theta_1)*\cos(\theta_2) + \sin(\theta_1)*\sin(\theta_2) * \cos(\phi_2-\phi_1)$

with $\theta = colatitude$
and $\phi = longitude$.

Is it a good way to calculate s ?

To have a good linear speed according to positions on the sphere, we also told me to find "dynamically" the plane $\pi$ containing severals points and to project these points on the parallel plane to $\pi$ passing through the center of the sphere. Then, to calculate the angular speed $\omega$.

But it doesn't work since my linear speed was sometimes higher when points are close together ($\omega~0$) compared at when they describe a small circle ($\omega~0.08 rad/sec$).

Thank you.

Last edited: Jul 4, 2014
2. Jul 4, 2014

### Simon Bridge

As written, the linear speed of the sphere is zero.
Off your working, I guess you mean the tangential speed of a point on the surface of the sphere?

You should start by defining the spin axis, define cylindrical coordinates with the z-axis pointing along the spin axis ... from the angular velocity and the radius, you should be able to work out how the surface tangential speed varies with z. After that it is a matter of converting the coordinates.

3. Jul 5, 2014

### tahsphere

I am not physicist but biologist, I am not sure to use the good words. I don't think that my linear speed is zero.
For example, my points can be on a small circle with one revolution each 6 hours or more. I want to calculate the speed so that, for example, one turn on a sphere parallel is 360° regardless of the colatitude of the points.

4. Jul 6, 2014

### Simon Bridge

If the sphere stays centered at the origin, then the linear speed of the sphere is zero: the sphere itself does not move about.
You know - it's like when a soccer ball just sits in one place spinning - you'd say that the ball's speed is zero even though the points on it's surface are clearly moving.

I am trying to establish what it is you want the linear speed of.
If you want to find the tangential speed of a point on the surface of the sphere - I have already told you how to do that. If you mean something else, then you have to say.

Last edited: Jul 6, 2014
5. Jul 6, 2014

### tahsphere

Hello, thank you for your answers. I understand now what the linear speed is. Yes, the center of my sphere stay centered at the origin.

If I have theses points Pi :

longitude : P1=pi/4; P2=2*(pi/4); P3=3*(pi/4); P4=pi; P5=5*(pi/4); P6=6*(pi/4); P7=7*(pi/4)

I want to calculate a mean angle of pi/4 as if the points were on the equator with colatitude=pi/2.

Of course, my points are not on the same parallel and axis of rotation change over time like this :

If what I want is the tangential speed, can you please give me more details about your method (calculations) ?
Is the spin axis the normal to the plane containing the points ?
How can I know when to change of spin axis ? Should I calculate this one every x points ?

6. Jul 6, 2014

### Simon Bridge

Yike - what you are trying is non-trivial.

For a sphere spinning with a fixed angular velocity (pseudo)vector the calculation is easy - do you know how to do that to start with?

7. Jul 7, 2014

### tahsphere

I don't know how to do that.
I just know that the angle between 2 points A (xA,yA,zA) and B (xB,yB,zB) through the center of the sphere is $\theta = \arccos (xA xB + yA yB + zA zB)$.

I use projections onto the plane passing through the plane and then calculate theta for each time t.

8. Jul 7, 2014

### Simon Bridge

Well that's something you will need to know.
The coordinates on the sphere are basically spherical-polar.
You need to be able to convert from those to cylindrical-polar.

If the axis of rotation is the z-axis, then points on the surface will move in a circle about the z-axis with radius r given by:

$r(z)=\sqrt{1-z^2}$ (for a unit sphere)

If the sphere has angular velocity $\vec \omega$ pointing in the +z direction, then the tangential velocity of a point on the surface is given by: $\vec v = \vec\omega\times \vec r$ ... where $\vec r$ is a vector pointing at the point, perpendicular to the z axis.

Start to see what is involved?

Once you have the velocity vector in coordinates about the axis of rotation, you need only apply a rotation matrix to find it in some other coordinates.

9. Jul 7, 2014

### tahsphere

Hello,

I wanted to find a better way to estimate axis of rotation. I found the Kabsch algorithm for calculating the optimal rotation matrix that minimizes the RMSD from 3 points or more.

Thus, I have my rotation matrix R, I can deduct the axis of rotation with the eigen vector corresponding to the eigen value equal to 1.
I can find my angle from the rotation matrix from the trace : alpha=acos((U[1,1]+U[2,2]+U[3,3]-1)/2)

For my example above :

longitude : P1=pi/4; P2=2*(pi/4); P3=3*(pi/4); P4=pi; P5=5*(pi/4); P6=6*(pi/4); P7=7*(pi/4)

I have the good angle mean, even if I change my colatitude. When I have points close together, I have a small angle mean.
I guess that the speed must be constant. But If I calculate this every 3 points, may I have a good approximation ?

Other method :
From spherical coordinates (r=1, longitude=phi,colatitude=theta), I can find cylindrical coordinates (r, phi, z) like this : r=1 * sin(theta); phi=phi and z=cos(theta)

If the z-axis must point along the spin axis (c1,c2,c3), I suppose that z=c3 ?

Then I can calculate the angle. If the axis of rotation is the z-axis, I can calculate r with your formula. If my axis of rotation is inclined, how can I calculate r ? Is my center of rotation equidistant from 2 successive points ?
After, I don't understand why I must use a rotation matrix or convert the coordinates?

10. Jul 8, 2014

### Simon Bridge

It looks to me like you are overcomplicating things by trying to generalize your questions.
I think you need to start again - I have no idea what you are trying to achieve and without that information I cannot help you.

What is the context?
What is it you want to know?

I see you have posted this as homework - so someone has set this for you to do as an assignment?
Do you have the actual text of the homework to show me?

11. Jul 8, 2014

### tahsphere

Hello, It's not really a homework, it's just a part of my project in biology for my master thesis.

I want to know the rotation speed of a sphere (angle/min). Using magnetic field, I recorded points on the surface of the sphere every minute (figure above). I want that this angle do not depend of the colatitude (if I have one turn on the sphere at different colatitude, I want the same speed => 360/t).

The rotation matrix found with the Kabsch algorithm (implemented) seems to give me good results for tests with points on the same parallel. I can calculate the axis of rotation and the "true" angle every X points. If my rotation speed isn't constant between these X points, I can have a kind of mean (since it's based on least square)? This can result in a speed calculation every X minutes ? I'm not sure... At least, I have the rotation axis for more calculation.

I'm just trying different possible solutions and don't want to overcomplicate things :)

Last edited: Jul 8, 2014
12. Aug 1, 2014

### tahsphere

Hello,

Any solution ? Maybe I don't give good explanations.

If a sphere is spinning around an axis with its center staying fixed, how can I know its angular velocity from points at its surface recorded each minutes ?

For example, the sphere below is rotating around (0, 0, 1) with an angular velocity of pi/40 rad/min , I have 3 pens touching the sphere at different latitudes each minute (I have cartesian coodinates of these points). How can I deduce from the blue, red and orange points the same angular velocity (pi/40)?

I know how to do this with 3 consecutive points (3 minutes) P, Q and L. My rotation axis is the line of intersection of the perpendicular bissector of segments PQ and QL. Then I can calculate a good angle given this axis of rotation (from blue, red or orange points). But it is not good when this axis can change between PQ and QL ...

Can I find a solution from two consecutive points ?

Thank you

13. Aug 1, 2014

### Simon Bridge

Given that each data-point will have an uncertainty related to it, you'll probably need to use some regularization approach. The exact approach depends on how much you know to start with. i.e. do you know the orientation of the axis of rotation? The radius of the sphere? Do you know the rotation is slow compared with the time interval between measurements?

You can calculate these things from many consecutive measurements of course.

You need at least three points to establish the plane of rotation, and, assuming a circle, the same three will tell you the center of the circle. The more points you have the better picture you will have.

Note: if it is assigned to you as part of your Masters, then you need the experience of working it out.
It I just tell you then it will defeat the purpose.

Have you asked your supervisor for a reference for this sort of problem?
See: http://home.comcast.net/~szemengtan/ [Broken] ... the notes on "Inverse Problems".

Last edited by a moderator: May 6, 2017
14. Aug 4, 2014

### tahsphere

In biology, it's not usual to work with this kind of data. I don't have experience of a physicist or a mathematician and my supervisor don't give me reference. I read the notes but I have difficulties to find a direct application for my problem.

A priori, I have no information about radius of the sphere, rotation axis and angular velocity. I just deducted from data that velocity is small, around 1-2 dg/minutes.

Until now, I used moving average on x, y and z coordinates to remove noise. Then I used least squares to fit a sphere. Afterwards, I projected points onto unit-sphere surface.

Angular velocity : I used least squares (by an iterative way) to find the plane of rotation. The normal is the axis of rotation, I projected points onto this axis to find the center of the circle and to calculate my angle.

You said that the more points I have and the better picture I will have. How many points must I take ? Must I find the number, for each interval, that minimise mean distance between plane and points (30 then 50 then ...) ?

15. Aug 4, 2014

### Simon Bridge

There is no way to tell in advance how many data points you need - that depends on the uncertainties in your measurements and the degree of accuracy needed. Only you know that.

You will notice that the location of the center of the circle will depend on which three points you pick.
If you use all the data you have, you can build a distribution and say the center is within some region you calculate with some uncertainty you also calculate.

You should look for work others have done on the same problem and see what they did - which means using your access to academic journals and texts - or learn about inverse problems and regularization methods. What you are asking for is non-trivial in general.