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:
-
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.
-
Develop User Interface for selecting (and consequently indicating
selection state) parts of the molecule, such as atoms and bonds.
-
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?).
-
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.
-
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.
-
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:
-
Investigate existing packages for rendering and interacting with
polyhedral surfaces.
-
If there is a worthy existing package then we should use it; We are
currently evaluating the use of Inworld's Spacecrafter 3D API.
-
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.
-
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.
-
Write routines to connect isovalued points to form:
-
isocontours in the xy-, yz-, and xz plane;
-
a polyhedral representation of the isosurface.
-
Write routines to render the isosurface on screen in several modes:
-
showing vertices only;
-
as a wireframe;
-
as a solid using some lighting model;
-
as a solid using transparency to display the underlying molecular
structure;
-
mapping colors onto the isosurface based on properties of the
wavefunction;
-
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.