* do file to exemplify drawing ellipses. See venndiag.ado for further notes.
* By JM.Lauritsen. Martin Villumsen sorted out the mathmatics of drawing ellipses
* in different angles.
capture program drop ellipse
program define ellipse        /* draw ellipse on screen  */
version 6
* parameters 1: Rotation of ellipse in degrees  2:offset X  3:offset Y  4+5: defines shape of ellipse* /
tempfile before
save "`before'"
local V = (`1'/360)* 2*_pi
local lam = `4'        	/*size of ellipse ~ length */
local eps = `5'       	/*shape of ellipse ~ if = 0 the result will be a circle*/
local offx = `2'
local offy = `3'
clear
set obs 1001
tempvar i x y
gen `i' = -_pi+(2*_pi/1000)*(_n-1)
gen `x' =  ((1+`eps')*(`lam')*cos(`i'))/(1+(`eps')*cos(`V'-`i'))*100 + `offx'
gen `y'  = ((1+`eps')*(`lam')*sin(`i'))/(1+(`eps')*cos(`V'-`i'))*100 + `offy'
gph open
gph vline `x' `y'
gph text 2000 18000 0 -1  Angle in this graph is `1'
gph text 3500 18000 0 -1  Offset X: `2'   Offset Y: `3'
gph text 4500 18000 0 -1  Parameter: Size=`4' Shape=`5'
gph close
use "`before'", clear
end

* now try three examples:

ellipse 0 20000 12000 15 0.85  
more 
ellipse 110 5000 15000 8 0.9   
more 
ellipse 240 12000 12000 25 0.65