Xavier Bury
Thu, 21 Sep 2000 12:57:25 -0700
> > I've been reading the list heaps and finding out almost all > that I need to > > know at this stage but I have one big problem. > > > > I am developing a stack that needs to redraw an ellipse and a > circular arc > > that intersects with the ellipse at two points. I thought that the oval > > graphic was the best tool for the job but how do I find the > intersection > > points. The rect of the arc is set and the user sets the rect of the > > ellipse. I really only need to know the x coordinates so I can > calculate the > > arcAngle and the startAngle of the arc. > > > > My understanding is that an oval has no real mathematical > definition so is > > the oval tool actually an ellipse? a little meta geometry should help here... given that im not sure what you mean with elipses and ovals (pretty ambiguous here) you can do a lot of precise enough calculations with geometry... If you draw a rectangle (rect) over that same oval you have an easier view to "estimate" your points... the thing is algebra level, and it's easy to find code (borrowed from c or java anywhere on the net... (all the keywords for the search are in that previous sentence - will take ya right to it). There's also tons of good programming books on this subject! im a little tempted to do some too lately... i'll c what I can find! http://www.mathcom.com/nafaq/q230.8.html http://www.mathcom.com/nafaq/q285.html and http://www.primenet.com/~grieggs/cg_faq.html draw a circle as a Bezier (or B-spline) curve? http://www.primenet.com/~grieggs/cg_faq.html#Howto_Spline tell whether a point is within a planar polygon? http://www.primenet.com/~grieggs/cg_faq.html#Howto_PIP in sum without code or more there I found... How do I draw a circle as a Bezier (or B-spline) curve? The short answer is, "You can't." Unless you use a rational spline you can only approximate a circle. The approximation may look acceptable, but it is sensitive to scale. Magnify the scale and the error of approximation magnifies. Deviations from circularity that were not visible in the small can become glaring in the large. If you want to do the job right, consult the article: "A Menagerie of Rational B-Spline Circles" by Leslie Piegl and Wayne Tiller in IEEE Computer Graphics and Applications, volume 9, number 9, September, 1989, pages 48-56. (www.ieee.org or something like that...) For rough, non-rational approximations, consult the book: Computational Geometry for Design and Manufacture by I. D. Faux and M. J. Pratt, Ellis Horwood Publishers, Halsted Press, John Wiley 1980. For the best known non-rational approximations, consult the article: "Good Approximation of Circles by Curvature-continuous Bezier Curves" by Tor Dokken, Morten Daehlen, Tom Lyche, and Knut Morken in Computer Aided Geometric Design, volume 7, numbers 1-4 (combined), June, 1990, pages 33-41 [Elsevier Science Publishers (North-Holland)] How do I tell whether a point is within a planar polygon? Consider a ray originating at the point of interest and continuing to infinity. If it crosses an odd number of polygon edges along the way, the point is within the polygon. If the ray crosses an even number of edges, the point is either outside the polygon, or within an interior hole formed from intersecting polygon edges. This idea is known in the trade as the Jordan curve theorem; see Eric Haines' article in Glassner's ray tracing book (above) for more information, including treatment of special cases. Another method is to sum the absolute angles from the point to all the vertices on the polygon. If the sum is 2 pi, the point is inside, if the sum is 0 the point is outside. However, this method is about an order of magnitude slower than the previous method because evaluating the trigonometric functions is usually quite costly. www.ddj.com might have some nice algorythms too!!! almost forgot my bible! Archives: http://www.mail-archive.com/metacard%40lists.best.com/ Info: http://www.xworlds.com/metacard/mailinglist.htm Please send bug reports to <[EMAIL PROTECTED]>, not this list.