3
$\begingroup$

I need to formulate an equation for a circle that exists on a given sphere, given a point on the sphere and a directional tangent vector.

I am trying to write a graphical program that has some characters moving around a sphere. I need the equation so I can update each character's position. The characters have an orientations and a starting point. I just need to move them over time around a sphere.

  • 0
    Are you looking for a great circle (which would be unique) or any old circle on the sphere through the given point in the given direction?2012-11-21
  • 0
    wouldn't a point on a sphere with a tangent vector at that point give a great circle? Doesn't a point and a vector describe a plane, then a plane and sphere intersection describe a circle? I just don't know how to come up with those equations.2012-11-21

1 Answers 1

3

It's true that there are infinitely many circles on a sphere through a given point with a given initial velocity. (Just intersect the sphere with any affine plane that contains the initial point and to which the initial velocity vector is tangent.) But if you want a great circle, then there's only one, namely the intersection of the sphere with the linear subspace of $\mathbb R^3$ spanned by the initial point and the initial velocity, regarded as vectors in $\mathbb R^3$. It's given by a simple formula.

Suppose $p$ is a point on the sphere and $v$ is a vector tangent to the sphere at $p$. (Here I'm thinking of both $p$ and $v$ as elements of $\mathbb R^3$.) Let $a = \|v\|/\|p\|$. The great circle with initial point $p$ and initial velocity $v$ is parametrized by $$c(t) = (\cos at)p + \frac{1}{a}(\sin at) v.$$ If the sphere has unit radius and $v$ is a unit vector, then this simplifies to $$c(t) = (\cos t)p + (\sin t)v.$$

  • 0
    May I suggest adding that this circle is the intersection of the sphere and the subspace of $\mathbb{R}^3$ spanned by $p$ and $v$?2012-11-22
  • 0
    @Neal: Sure, good idea. Done.2012-11-23
  • 0
    This is great @Jack Lee, thanks. I do have one final question though, I have to move these characters around this circle. Let's say every screen update the character will move a certain distance, d. How would I find the character's new position using this equation? It is not a unit sphere.2012-11-26
  • 0
    If v is a unit vector in the direction you want the character to go, then my first formula is a unit-speed curve, so it traverses a distance t in time t. If the vector $v_0$ you start with is not a unit vector, you can just divide it by its norm and use $v = v/\|v_0\|$ in the formula.2012-11-26