Graphics Software Specification

This document details the requirements for representing and interacting with small molecules, orbitals and other electronic properties for the Quantum Science Across Disciplines (QSAD) project.

Molecular Structure

A view of molecular structure provides a graphical representation of the atoms and their relative positions for a molecule. We are currently using a ball and stick model. In addition to displaying the atoms as balls we display the bonds as sticks. Consequently, the molecule must provide (or this must be computed or provided by user input) connectivity information in the form of a list of bonds. The sticks displayed must indicate bond type, e.g. single-, double-, and triple-bonds.

The program must provide a method for interacting with the molecule in several modes: viewing mode, construction mode, and measurement mode. All three modes must be available within a single window; mode could be indicated by cursor type; mode could be specified from a tool palette or menu. While in viewing mode the user manipulates a virtual trackball for changing the view of the molecule by rotation, translation, and zoom. While in this mode the positions of the atoms wrt the molecule's coordinate system should not change. While in construction mode the user can select atoms and/or bonds to perform a number of editing tasks. While in measurement mode the user can get precise numerical feedback about the location of the atoms. While in construction mode the user must be provided with tools to build molecules from elements in the periodic table. We should design this tool to be as simple as possible to construct the more common molecules. A software library embodying VSPER rules should be available to assist the user in constructing the molecule. The user must be able to adjust the locations of atoms to fine detail with an editing trackball and various measurement tools. The user should also have available a minimize button to configure their molecule (as best as possible) to its lowest energy state. There is a bias in various accepted Molecule Building programs to ensure that the menus and controls not cover up the screen space in which the molecule is displayed. We ought to adhere to this bias.

The following programming tasks must be performed:

  1. Develop User Interface for controlling the view of the molecule on the screen. For the time being we'll call this the virtual trackball. Manipulation of the trackball should create the feel of rotating the entire molecule about a central point. The UI should also provide intuitive methods for zooming in and out; selecting and dragging the entire molecule. Extra Credit: For drag & drop support with the rest of the program we need to create a bitmapped iconic representation of the molecule. Aside: I am not convinced we need to have a trackball visually available on the screen. Further investigation of RasMol and its controls for rotating the molecule may be informative.
  2. Develop User Interface for selecting (and consequently indicating selection state) parts of the molecule, such as atoms and bonds.
  3. Develop User Interface for measuring and modifying properties of the molecule, such as bond length and angle. We need a mechanism that is easy to use, yet different than the virtual trackball. For the time being we'll call this the editing trackball. The virtual trackball changes the view of the molecule whereas the editing tool changes (or measures) the molecule.This UI component will support measurement tasks such as finding the location of a selected molecule (via a locator), finding the distance between two selected atoms (via a ruler?), finding an angle by selecting three consecutive atoms (via < tool?).
  4. Develop User Interface for reading pre-defined molecules. We will provide a small set (a periodic table) of molecules that can be easily selected in addition to methods for reading molecules from an external file. Of course we will need the ability to save the state of the molecule.
  5. Develop User Interface for building a molecule by selecting and dragging atoms from a periodic table. We also need to provide a means of specifying the total number of valence electrons available to the molecule.
  6. Provide VSPER support by giving cues as to available bonds and standard bond angles.

Electronic Properties

A view of an electronic property of an atom or molecule will result in the display of a selected atomic or molecular orbital, the display of the total electron density for an atom or a molecule, or the display of the electron density difference (or blue glue) for a molecule. In the electronic structure window the user can view the surface representation of the desired property. This surface can then be rotated, translated, and scaled using the same virtual trackball developed for the molecular structure window. We would like to have a way to create an animation or movie of an electronic property as a result of changing some parameters. For example, we might want to create a representation of the glue as a function of internuclear distance between two hydrogen atoms.

The following programming tasks must be performed:

  1. Investigate existing packages for rendering and interacting with polyhedral surfaces.
    1. If there is a worthy existing package then we should use it; We are currently evaluating the use of Inworld's Spacecrafter 3D API.
    2. Otherwise we will need to develop a code library for 3D graphics rendering which will be used by the rest of the program. We may consider building this library as close as possible to the proposed Java3D specification.
  2. Write a routine to generate a set of isovalued points for a real valued wavefunction within a specified region of space, with a given value of the wavefunction.
  3. Write routines to connect isovalued points to form:
    1. isocontours in the xy-, yz-, and xz plane;
    2. a polyhedral representation of the isosurface.
  4. Write routines to render the isosurface on screen in several modes:
    1. showing vertices only;
    2. as a wireframe;
    3. as a solid using some lighting model;
    4. as a solid using transparency to display the underlying molecular structure;
    5. mapping colors onto the isosurface based on properties of the wavefunction;
  5. Provide a user interface for changing the view of the surface. This should give the user the feel of grabbing and rotating the surface on the screen. We should use the same virtual trackball type of interface as we develop for the molecular structure window.