Midpoint ellipse drawing algorithm | Javascript program for implementing Mid - Point Ellipse Drawing Algorithm ; Initial decision parameter of region 1 ; For region 1 ; Print points based on 4 - way symmetry ; Checking and updating value of decision parameter based on algorithm ; Decision parameter of region 2 ; Plotting points of region 2 ; Print points based on 4 - way symmetry ; Checking and updating parameter value based on algorithm ; To draw a ellipse of major and minor radius 15 , 10 centred at ( 50 , 50 )
function midptellipse ( rx , ry , xc , yc ) { var dx , dy , d1 , d2 , x , y ; x = 0 ; y = ry ; d1 = ( ry * ry ) - ( rx * rx * ry ) + ( 0.25 * rx * rx ) ; dx = 2 * ry * ry * x ; dy = 2 * rx * rx * y ; while ( dx < dy ) { document . write ( " " + ( x + xc ) . toFixed ( 5 ) + " " + ( y + yc ) . toFixed ( 5 ) + " " + " " ) ; document . write ( " " + ( - x + xc ) . toFixed ( 5 ) + " " + ( y + yc ) . toFixed ( 5 ) + " " + " " ) ; document . write ( " " + ( x + xc ) . toFixed ( 5 ) + " " + ( - y + yc ) . toFixed ( 5 ) + " " + " " ) ; document . write ( " " + ( - x + xc ) . toFixed ( 5 ) + " " + ( - y + yc ) . toFixed ( 5 ) + " " + " " ) ; if ( d1 < 0 ) { x ++ ; dx = dx + ( 2 * ry * ry ) ; d1 = d1 + dx + ( ry * ry ) ; } else { x ++ ; y -- ; dx = dx + ( 2 * ry * ry ) ; dy = dy - ( 2 * rx * rx ) ; d1 = d1 + dx - dy + ( ry * ry ) ; } } d2 = ( ( ry * ry ) * ( ( x + 0.5 ) * ( x + 0.5 ) ) ) + ( ( rx * rx ) * ( ( y - 1 ) * ( y - 1 ) ) ) - ( rx * rx * ry * ry ) ; while ( y >= 0 ) { document . write ( " " + ( x + xc ) . toFixed ( 5 ) + " " + ( y + yc ) . toFixed ( 5 ) + " " + " " ) ; document . write ( " " + ( - x + xc ) . toFixed ( 5 ) + " " + ( y + yc ) . toFixed ( 5 ) + " " + " " ) ; document . write ( " " + ( x + xc ) . toFixed ( 5 ) + " " + ( - y + yc ) . toFixed ( 5 ) + " " + " " ) ; document . write ( " " + ( - x + xc ) . toFixed ( 5 ) + " " + ( - y + yc ) . toFixed ( 5 ) + " " + " " ) ; if ( d2 > 0 ) { y -- ; dy = dy - ( 2 * rx * rx ) ; d2 = d2 + ( rx * rx ) - dy ; } else { y -- ; x ++ ; dx = dx + ( 2 * ry * ry ) ; dy = dy - ( 2 * rx * rx ) ; d2 = d2 + dx - dy + ( rx * rx ) ; } } } midptellipse ( 10 , 15 , 50 , 50 ) ;