Midpoint ellipse drawing algorithm | PHP 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 ; printing 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 )
< ? php function midptellipse ( $ rx , $ ry , $ xc , $ yc ) { $ 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 ) { echo " ( ▁ " , $ x + $ xc , " , ▁ " , $ y + $ yc , " ▁ ) STRNEWLINE " ; echo " ( ▁ " , - $ x + $ xc , " , ▁ " , $ y + $ yc , " ▁ ) STRNEWLINE " ; echo " ( ▁ " , $ x + $ xc , " , ▁ " , - $ y + $ yc , " ▁ ) STRNEWLINE " ; echo " ( ▁ " , - $ x + $ xc , " , ▁ " , - $ y + $ yc , " ▁ ) STRNEWLINE " ; 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 ) { echo " ( ▁ " , $ x + $ xc , " , ▁ " , $ y + $ yc , " ▁ ) STRNEWLINE " ; echo " ( ▁ " , - $ x + $ xc , " , ▁ " , $ y + $ yc , " ▁ ) STRNEWLINE " ; echo " ( ▁ " , $ x + $ xc , " , ▁ " , - $ y + $ yc , " ▁ ) STRNEWLINE " ; echo " ( ▁ " , - $ x + $ xc , " , ▁ " , - $ y + $ yc , " ▁ ) STRNEWLINE " ; 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 ) ; ? >