The answer, with full Java code is located on StackOverflow [here](http://stackoverflow.com/questions/6972331/how-can-i-generate-as-set-of-uniform-points-around-an-ellipse) Answered by: ------- edited Dec 11 '13 at 4:14 John Paul answered Dec 11 '13 at 3:48 Dave package com.math; public class CalculatePoints { public static void main(String[] args) { // TODO Auto-generated method stub /* * dp(t) = sqrt( (r1*sin(t))^2 + (r2*cos(t))^2) circ = sum(dp(t), t=0..2*Pi step 0.0001) n = 20 nextPoint = 0 run = 0.0 for t=0..2*Pi step 0.0001 if n*run/circ >= nextPoint then set point (r1*cos(t), r2*sin(t)) nextPoint = nextPoint + 1 next run = run + dp(t) next */ double r1 = 20.0; double r2 = 10.0; double theta = 0.0; double twoPi = Math.PI*2.0; double deltaTheta = 0.0001; double numIntegrals = Math.round(twoPi/deltaTheta); double circ=0.0; double dpt=0.0; /* integrate over the elipse to get the circumference */ for( int i=0; i < numIntegrals; i++ ) { theta += i*deltaTheta; dpt = computeDpt( r1, r2, theta); circ += dpt; } System.out.println( "circumference = " + circ ); int n=20; int nextPoint = 0; double run = 0.0; theta = 0.0; for( int i=0; i < numIntegrals; i++ ) { theta += deltaTheta; double subIntegral = n*run/circ; if( (int) subIntegral >= nextPoint ) { double x = r1 * Math.cos(theta); double y = r2 * Math.sin(theta); System.out.println( "x=" + Math.round(x) + ", y=" + Math.round(y)); nextPoint++; } run += computeDpt(r1, r2, theta); } } static double computeDpt( double r1, double r2, double theta ) { double dp=0.0; double dpt_sin = Math.pow(r1*Math.sin(theta), 2.0); double dpt_cos = Math.pow( r2*Math.cos(theta), 2.0); dp = Math.sqrt(dpt_sin + dpt_cos); return dp; } }