
John Phillips wrote:
Some problems are simplified incredibly by a good choice of coordinate system. As a trivial example, consider a circle in two dimensional coordinates. There is no properly defined function in Cartesian coordinates that produces a circle. (There is a relation, but a circle is not single valued in Cartesian coordinates, and so can't be written as a function.) The function in plane polar coordinates is r = c (The radius equals a constant), when talking about a circle of radius c centered at the origin. This is a function, and a particularly simple one.
That seems only useful if you define your geometric objects as functions on coordinates. The geometry library doesn't take this analytical approach at all, since it provides a finite set of basic geometric objects. Basically, points, lines, segments, circles (which are really hyperspheres) and polygons are all you have to describe shapes with this library. I suppose it should be extended to also include half-lines, planes, half-planes, half-spaces, hyperplanes, etc. Adding the ability to construct objects from the union/intersection/difference of other objects could also be useful. Those objects are not even defined in terms of functions or not even equations upon their coordinates, but with more practical relations around points. For example, a circle is defined as the set of points that are at equal distance to some other point. A circle is thus represented as a point plus a distance. A polygon with no hole is the space which is inside a closed path of points. It is thus represented as a sequence of points in some specific order. Whether the points use one or another coordinate system has no consequences on the way the set of points is represented. The algorithms, however, will perform computations on those points, and thus require some proprieties on them. Orthonormal coordinates give a well-known framework to code in. The point is, I don't say what gain you can have by allowing other coordinate systems, since it will not allow easier expressions of shapes or problems in that library. Maybe working with other coordinate systems would be more the job of a different library dedicated to differential geometry, than of this library which only cares about simple basic and mostly discrete shapes. To clarify, this library should maybe be called computational geometry. The scope of the library is actually fairly close to the description at wikipedia: <http://en.wikipedia.org/wiki/Computational_geometry> I don't even know how one could define a polygon as a function in any coordinate system, by the way. As for your circle example, it only works if the center is at the origin, so how do you generalize it without parameterizing? By the way, in case you haven't noticed, I have zero differential geometry knowledge, so I barely understand most of what you've been saying ;).