Screenshot instructions:
Windows
Mac
Red Hat Linux
Ubuntu
Click URL instructions:
Rightclick on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)
From: ronny abraham <ronny@jl...>  20020825 23:01:22

Hi, I've only browsed through the Evas code, and that was a while ago, so I don't know if you have this in the new code. In any case, I think people will get a kick out of this. I found the code in "mathematical elements for computer graphics" by rogers & adams. pg 21516 Anyway, I'm going to go through the math of it, so just bear with me. I'll try to paraphrase as much as I can, but their style is very concise, so there isn't much I can do to improve on it. given a circle of radious r x = rcos(theta) y = rsin(theta) 0 <= theta <= pi assume a fixed number of points equally spaced apart are used to represent the circle delta_theta = 2 * pi/num_points the intial points are: x_0 = rcos(0) y_0 = rsin(0) from that you can do this: x_i+1 = rcos( theta_i + delta_theta ) y_i+1 = rsin( theta_i + delta_theta ) where theta_i is the angle we used for the last points ( x_i and y_i )we got. x_i+1 and y_i+1 are the current points we're trying to find. sum of angles formula gives us: x_i+1 = r( cos(theta_i) cos(delta_theta)  sin(theta_i) sin(delta_theta) ) y_i+1 = r( cos(theta_i) sin(delta_theta)  cose(delta_theta) sin(theta_i) ) if we take the original equations, with theta as theta_i x_i = rcos(theta_i) y_i = rsin(theta_i) we then get: x_i+1 = x_i * cos( delta_theta )  y_i * sin(delta_theta) y_i+1 = y_i * sin( delta_theta )  y_i * cos(delta_theta) the nifty thing about all this, is that you only need to compute: delta_theta cos(delta_theta) sin(delta_theta) ONCE. Which allows us to kick out the timeintensive trig stuff. I think that this makes having a circle function in evas very possible since it's fast. Of course, if it already exists, then at least this email was (hopefully) entertaining. :D 
From: Moritz Angermann <moritz.angermann@gm...>  20020826 04:09:49

if you talk about evas(21) i think you'r right, about evas(10.66) i don'T know but i think the Berenham algorithm would be better since it's faster ( when i tryed it ) here is the 'php' source wich should be easily understandable. function circle($center_x,$center_y,$r,$color){ global $img; $d = 3(2*$r); $y = $r; for($x=0;$x<=$y;$x++){ imagesetpixel($img['src'],$center_x+$x, $center_y+$y, $color); imagesetpixel($img['src'],$center_x+$x, $center_y$y, $color); imagesetpixel($img['src'],$center_x$x, $center_y+$y, $color); imagesetpixel($img['src'],$center_x$x, $center_y$y, $color); imagesetpixel($img['src'],$center_x+$y, $center_y+$x, $color); imagesetpixel($img['src'],$center_x+$y, $center_y$x, $color); imagesetpixel($img['src'],$center_x$y, $center_y+$x, $color); imagesetpixel($img['src'],$center_x$y, $center_y$x, $color); if($d < 0) $d = $d + ( 4 * $x ) + 6; else{ $d = $d + 4 * ($x  $y) + 10; $y = $y 1; } } } i got a same running here: http://mindbox.mine.nu/~ss/imagery.php and there source here: http://mindbox.mine.nu/~ss/imagery_src.php regards On Mon, 20020826 at 00:51, ronny abraham wrote: > > > Hi, I've only browsed through the Evas code, and that was a while ago, > so I don't know if you have this in the new code. In any case, I think > people will get a kick out of this. > > I found the code in "mathematical elements for computer graphics" by > rogers & adams. pg 21516 > > Anyway, I'm going to go through the math of it, so just bear with me. > I'll try to paraphrase as much as I can, but their style is very > concise, so there isn't much I can do to improve on it. > > > given a circle of radious r > > x = rcos(theta) > y = rsin(theta) > > 0 <= theta <= pi > > > assume a fixed number of points equally spaced apart are used to > represent the circle > > delta_theta = 2 * pi/num_points > > the intial points are: > > x_0 = rcos(0) > y_0 = rsin(0) > > from that you can do this: > > x_i+1 = rcos( theta_i + delta_theta ) > y_i+1 = rsin( theta_i + delta_theta ) > > where theta_i is the angle we used for the last points ( x_i and y_i )we > got. > > x_i+1 and y_i+1 are the current points we're trying to find. > > > sum of angles formula gives us: > > x_i+1 = r( cos(theta_i) cos(delta_theta) >  sin(theta_i) sin(delta_theta) ) > > y_i+1 = r( cos(theta_i) sin(delta_theta) >  cose(delta_theta) sin(theta_i) ) > > > if we take the original equations, with theta as theta_i > > x_i = rcos(theta_i) > y_i = rsin(theta_i) > > we then get: > > x_i+1 = x_i * cos( delta_theta )  y_i * sin(delta_theta) > y_i+1 = y_i * sin( delta_theta )  y_i * cos(delta_theta) > > the nifty thing about all this, is that you only need to compute: > > delta_theta > cos(delta_theta) > sin(delta_theta) > > ONCE. > > Which allows us to kick out the timeintensive trig stuff. > > I think that this makes having a circle function in evas very possible > since it's fast. > > Of course, if it already exists, then at least this email was > (hopefully) entertaining. :D > > > >  > This sf.net email is sponsored by: OSDN  Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > enlightenmentdevel mailing list > enlightenmentdevel@... > https://lists.sourceforge.net/lists/listinfo/enlightenmentdevel >   Moritz Angermann / mind   This message is composed of 100% recycled electrons & photons only!  
From: Nathan Ingersoll <ningerso@d.umn.edu>  20020826 04:49:31

There isn't currently circle/ellipse code in evas, but there is in Imlib2. It uses an algorithm similar to the midpoint ellipse algorithm, but the floating point arithmetic has been transformed to integer. Most likely, something like this is the algorithm that would be used in evas (possibly with an optimization to use a Bresenham like algorithm for circles). RbdPngn   Nathan Ingersoll  Computer Science/Mathematics   mailto: ningerso@...  University of MinnesotaDuluth   http://umn.edu/~ningerso  http://www.d.umn.edu   
Sign up for the SourceForge newsletter:
No, thanks