Developing a Java Software Tool for Oriented Matroids

Geetika Tewari

The research undertaken this summer involves programming in Java 1.2 a Graphical User Interface (GUI) for a research tool in Computational Geometry. Its functions include drawing and visualizing research-related geometrical drawings. Oriented Matroids are an abstraction of finite sets of points and lines in a plane, and are important objects of study in Combinatorial Geometry with applications in many other parts of Mathematics.

The main objective of this project is to develop a user friendly software tool that instantaneously allows researchers to draw sample geometrical figures and to develop and test algorithms based upon this. Given the nature of this objective, a significant portion of the research was devoted to the development of the user interface. The interface was programmed in Java 1.2, a version of Java with a new philosophy that incorporates the Model, View, and Control (MVC) approach. This programming approach is strongly object-oriented, and requires the programmer to separate the application, user input, and display logics. It makes for an exceptionally clean design, and allows minimal coupling between interface and application. The Model is an interface independent application. The View is responsible for maintaining an updated view of the model and must be notified of changes to the model. The Control often initiates changes to the model.

Initially the research was concentrated towards implementing an interface that depicts the duality of lines and points. Two types of applets were designed: One which allows the user to draw points on a dynamic canvas, and view corresponding lines for these points being drawn on a passive one. Conversely, the other applet allows the user to draw lines on a dynamic canvas, and view the corresponding points for these lines being drawn on a passive canvas. It was concluded that an interface consisting of three frames: two canvases and a text-area, produced as a result of a button being pressed on the screen, was the most suitable and convenient form. Once the interface was established, the emphasis shifted to the object which was classified as the "Set of Points." The object and its attributes were developed, again with user-friendliness as the underlying objective. A specific set of menu items was developed for the object, and a separate set of menus was established for manipulating various aspects of the canvases, such as resizing, orientation, origin, background, and grid. Towards the end of the research, the object was implemented in the form of a linked list, a convenient data structure which allows easy insertion and deletion of points.

The Initial Design





The Final Design

Various aspects of the user interface served as major challenges, and required important decision-making and repeated experimentation. The question of an appropriate layout manager for the interface was a critical aspect of the research, given that user-friendliness and browser flexibility were the priorities. Decisions regarding the appropriate classifications of variables, given the MVC approach, were demanding, and required considerable planning before implementation. Floating point numbers, as well as the layout of mathematical calculations, played a critical role in the drawing of the lines and points, and required extreme precision. The code was continually revised in order to ensure that it remained platform and browser independent. The future goals of this work would be to extend the selection of options offered in the menus, and to develop more complex features of the object which would facilitate computational geometers to investigate a wider selection of aspects of oriented matroids. (Supported by the Schultz Foundation Fellowship for summer research in Computer Science and a National Science Foundation grant)

Advisor: Dr. Ileana Streinu