0
$\begingroup$

I have an ellipse where the radius of x-axis = 100 and y-axis = 30. I have 3 objects where I want to evenly distribute it along the ellipse.

I have already done this for a circle where both axis' are the same, ex: radius x-axis=100 and y-axis = 100. I did:

  • evenSpace = 360/3.

Object1 (x,y) = (100 * cos(120*180*1) , 100 * sin(120*180*1).

Object2 same thing but instead of '1', it's 2.

Object3 same thing but instead of '1', it's 3.

This worked out fine for a circle, but with an ellipse I can't get it to work because the x-axis radius is much longer than the y-axis. Any help people? Thanks in advance.

$\endgroup$
4
  • $\begingroup$ You will need to use an elliptic integral (of the second kind) for this. $\endgroup$ Jan 5, 2012 at 3:21
  • $\begingroup$ @J.M. Can you give more detail, how this will work? $\endgroup$
    – draks ...
    Apr 5, 2012 at 10:53
  • $\begingroup$ @draks: the arclength of an ellipse requires an elliptic integral of the second kind for representation. I distinctly recall posting something in another question how to obtain the elliptic integral, but I can't find it at the moment. $\endgroup$ Apr 10, 2012 at 3:43
  • $\begingroup$ It depends on what the OP means by "evenly distributed". The responders are using "equal arc length", but another possibility could be "equal area of sectors from the center". These are the same for a circle, but different for an ellipse. $\endgroup$ Jul 16, 2013 at 5:22

1 Answer 1

1
$\begingroup$

Under the usual parametrization of ellipse $x=a\cos t$, $b=\sin t$, the arclength function comes out in terms of the elliptic integral of second kind as $$ \int_0^t \sqrt{a^2\sin^2 s+b^2\cos^2 s}\,ds = b\int_0^t \sqrt{1-(1-a^2/b^2)\sin^2 s}\,ds $$ which in Sage is b*elliptic_e(t,1-(a/b)^2). I divided this ellipse in three arcs of equal length:

three points

using Sage commands

a=100
b=30
t0=find_root(elliptic_e(t,1-(a/b)^2) == (1/3)*elliptic_e(2*pi,1-(a/b)^2), 0, 2*pi)
parametric_plot((100*cos(t),30*sin(t)),(t,0,2*pi)) + point([(100*cos(t0),30*sin(t0))],color='black',size=30) + point([(100*cos(-t0),30*sin(-t0))],color='black', size=30) + point([(100,0)],color='black', size=30) 
$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .