Velocity on the surface of a sphere

  • Thread starter phantom805
  • Start date
  • #1
Hi,

I want to move an object along the surface of a sphere with a given velocity. I essentially want to make a simple tether airplane simulator (control line).

I know that I need to work in spherical coordinates for the position of the object and its velocity.

I have seen an old post that descibes a similar problem but I cannot get it to work and cannot fully get my head around it. https://www.physicsforums.com/showthread.php?t=295684

Any help would be much appreciated.

Thanks
 

Answers and Replies

  • #2
your object should have a vector for its velocity toward the center of the earth an a manipulatable vector for it velocity tangent to the outside of the sphere. This will give the object a overall velocity "curved" around your sphere.
 
  • #3
This is what I have so far. I initially get the position of the object. Theta and Phi are initially zero and Radius = 2; Therefore the polar to opengl result is (0,0,2);

void init()
{
//position from polar to opengl
pos.x = Radius * sin(theta) * sin(phi);
pos.y = Radius * cos(phi);
pos.z = Radius* cos(theta) * sin(phi);
}

The velocity must be orthogonal to the position vector.

void update()
{
//update velocity
velocity.x = speed*cos((heading));
velocity.y = speed*sin((heading));

//ensure velocity is orthogonal to position
float proj = (velocity.x * pos.x + velocity.y* pos.y + 0*pos.z)/(Radius*Radius);
velocity.x = velocity.x - proj * pos.x;
velocity.y = velocity.y - proj * pos.y;
}

How can I apply this velocity vector to my object to ensure that it remains on the sphere and the speed remains constant around the poles and equator?

Thanks
 

Related Threads on Velocity on the surface of a sphere

  • Last Post
Replies
14
Views
8K
  • Last Post
Replies
3
Views
1K
  • Last Post
Replies
2
Views
680
  • Last Post
Replies
6
Views
5K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
15
Views
7K
Replies
4
Views
11K
Replies
3
Views
731
Replies
13
Views
6K
Replies
4
Views
3K
Top