Thursday, September 08, 2011

Oresme, plotting for GNUstep

Parabola
I started creating OresmeKit, a plotting and charting framework for Objective-C, GNUstep (and Cocoa/Mac). I had the idea since quite some time, but finally started working on it. I know others had sketches on the subject too, but at the end one does need to start somewhere. The Kit will offer custom Views to be embedded inside your application to plot data. The goal is to have simple setup possible. Plotting is a complex art which can be tweaked quite a bit and which can lead to interesting mathematical computations, but let's start with something simple and easily usable, or the design will never go beyond the drawing board.
sinc(x)
The first component is a Cartesian plotting: two X and Y array need to be provided for abscissa and ordinata values. The view can be set to display different X/Y ranges, the Quadrant can be selected and a "centered" mode is available to automatically set the Origo in the center. The View live-resizes and the plot colors can be set. Currently there are no optimizations of any kind, but for simple graphs it works quite well, as the example application shows. Along with the Framework I develop and release also examples which serve the dual-purpose of testing the Kit and providing a starting point for other developers who want to use OresmeKit.

In the screenshots, the example application plotting a parabola  and the plot of the sinc(x) function.


Why OresmeKit? In honour of Nicolas Oresme the antique philosopher who thought about coordinates long before Cartesius. Because Cartesius was too predictable as a name and too tied to X-Y plotting, while OresmeKit shall support more chart types in the future. What's next? I plan on adding some more features to the Cartesian drawing view first. Then typical charting views: bars, lines, pies... At some point some optimization and computation will be available, since otherwise plotting of large datasets will be unbearably slow.

OresmeKit and its examples are available in GAP and are yet unreleased, check the CVS repository.

No comments: