Java  -  Portfolio  -  Resumes  -  C/C++/C#  - Links  -  Photos  - Misc

This page includes a few screenshots of prior and current work that might be interesting.  I own all of the source code and rights to all examples.  (The raw Digital Elevation Model data used to create the relief images were obtained from USGS and NASA public websites. The raw mapping data were acquired from the U.S. Department of Census and the EROS Data Center.)

Video Demonstration Page (WMV)   New! 

NOTE: Most of the UI work on this page was done using Java/Swing.  Exceptions are the 3D terrain rendering, the RDF ontology graph visualization, and the 4 bottom-most DOS imaging screenshots.

Still Image Screenshot Examples

ANDROID - Touch-and-drag-clock-hands interactive analog clock for kids - Cool Clock

Here is my first, and thus far, only mobile (Android/phone/tablet) app - an analog clock that lets children drag the clock hands to understand how a clock works:

A full-resolution screenshot of Cool Clock from the Android tablet emulator:
(Note that what appears to be 3D shading on the clock hands is actually 2D Linear Gradient paint
drawn perpendicular to the clock hands' long axis.)

Note: This app (and many additional practice screens) was originally coded in Java/Swing in 2010 and then ported to Android.

Java/Swing - From-scratch GPS component - Uses US Census Tiger Line data

Here is a 25 MP non-antialiased GIS-features graphic of San Diego county I created
using Java/Swing about 10 years ago using random colors for various GIS features/layers:

Java/Swing - Compact BST graph layout algorithm

Here is a screenshot for a Java/Swing Binary Search Tree visualization tool.  More details and screenshots of larger graphs can be seen here New!
Watch a WMV movie of this Java/Swing app 'in action' at the top of this page.

Java/Swing - Drawn from scratch gel-button basic numeric input pad widget

Here is an application-specific numeric entry control I recently wrote at home in Java 2D/Swing.  (It uses a semi-transparent variant of the gel button component directly below this example.)

Java/Swing - From scratch gel button

Here is a gel button component I recently wrote at home in Java/Swing 2D:

Visual Studio - C++ Open GL 3D model derived from Space Shuttle Digital Elevation SRTM data

Recently, I started learning Open GL.  Below, is my first "Hello World!" Open GL program (written in C++ and Qt).  It is a 3D rendering of the vicinity around Mt. Shasta using Space Shuttle elevation data (SRTM) with an elevation sample spacing of 3 arc seconds (300 feet).  This image was generated from 2,875,202 triangles.  It turns out that to get a smoothly shaded image in Open GL, the normal associated with each vertex of each triangle needs to be set to the average normal vector of its neighborhood/adjacent triangles.

Below, is a closer view of Mt. Shasta, this time using a 1 arc second data set (100 feet between elevation samples).  This image was generated from 6,465,608 triangles.

Cross-eyes stereo pair view:

The diagram below explains some of the details regarding how smooth shading for Digital Elevation Models (DEMs) can be achieved in Open GL.

Java/Swing - Drag-and-drop Least-Squares polynomial curve fitting 'calculator'

Below, is a drag-and-drop least-squares curve fitting "calculator" component I developed at home in Java 2D and Swing in about a day or so.  It allows users to fit 1st - 9th order polynomials to their data.  All you do is drag your data into the window and the axes are automatically scaled and your data points are drawn.  Right click and select Fit Polynomial, then select degree and you're done.  Another graphing widget I created allows you to drag titles and axis labels as well.  (In other words, creating a nice chart takes about 15 seconds.)   Note: there are some enhancements, such as smarter axes tick labeling and spacing, which have not yet been added.  (I just wrote this for fun a couple of years ago.)  Here is a WMV video clip which briefly demonstrates this component.

Java/Swing - Prototype example drag-and-drop dashboard IDE for powerful general-purpose distributed computing platform

Next, are some Autogeny era examples - all Core Java  (I designed and implemented most of, the GUI, middleware, and server layers). Note that several key components of the Autogeny platform were not completed.  See this page for further details.


Java 3D - Early experiments wiht Java 3D API

Java Swing + 2D + 3D Graphics libraryunit tests:


java 2d and java 3d graphics library unit tests gis map shapes  flowchart shapes, also rotating earth


Java/Swing - Hierarchical GIS layer filtering widget

Here is a hierarchical multi-layer Java Swing custom control I developed loaded with "hypothetical" data.  The sliders control alpha compositing and operate hierarchically.

java swing multi-layer hierarchical tree control shown with homeland security example

Java/Swing - 2D Joystick widget

Here is a Java Swing Joystick GUI widget I created for a mobile PC robot controller application mock-up.  It uses a "CircumferentialPaint" class I developed.  Here is a brief WMV video clip demonstrating this component.

java swing GUI joystick widget control

Java/Swing - From-scratch 3D Phong shadind of USGS digital elevation model data

[ Note:  All of the relief images below were computed circa 2002 to 2003 from scratch (they were not computed with Open GL or any other 3D library). ]

Below is an example shaded relief image of Folsom Lake using a rendering algorithm I developed for rendering raw Digital Elevation Model (DEM) data as a unit test.  This particular algorithm is surface normal based.  Coded in Java/Swing.

shaded relief image of folsom lake area computed from DEM data

Below is a shaded relief rendering of Mt. Shasta from very early space shuttle DEM data (a few missing data points were inserted).

Coded in Java/Swing.

Below is a shaded relief image of a portion of Mars using a different relief algorithm I developed, applied to Mars DEM data.  This algorithm is based on image subtraction.  Basically, the image is shifted and subtracted with respect to itself, the differences are then scaled (amplified), a median-grayscale constant is added, and the result is clamped to the [ 0 - 255 ] range.  Coded in Java/Swing.

excerpt of much larger Mars relief image computed from DEM data

Java/Swing - Full globe of Mars rendered from elevation data

Below, the same (un-optimized) algorithm has been applied to the entire Mars globe (66 million pixels).  WARNING: this points to a 6 MB file and may take a long time to download.  (All of the older grayscale DEM rendering examples were generated in 2002, including the full-globe image of Mars below.)

Coded in Java/Swing.

very large relief image of Mars computed from DEM data about 50 MP

Java/Swing - Full globe of Earth rendered from elevation data

Below, the above relief algorithm has been applied to the Earth (58 million pixels).  WARNING: this file is about 2 MB and may take awhile to download.  On all of these images, grayscale was selected so that color graphics/information could be overlaid/composited over the base image without the underlying terrain colors masking colored overlay data. 

Coded in Java/Swing.

large shaded relief image of earth computed from DEM data

Java/Swing - United States, county boundaries, airport locations - from Tiger Line data

Here is a basic Java/Swing mapping component I developed from scratch that reads data from US Census Tiger Line data files which drew state and county boundaries along with icons for airport locations of various size classes:

GIS like map of u.s. states and counties including airports and bases

Java/Swing - Multi-layer GIS viewer widget

Here is a basic Java/Swing multi-layer street-level mapping component I developed for viewing U.S. Census Tiger Line data.  The water boundaries were not filled because the application context this component was to be used in needed to be able to overlay colored icons and other graphics at any point in the map, and so, filling the water with the color blue would have made it difficult to draw, for example, icons representing water vehicles and their health/operational status (when the status color was blue).  The area in the map is Point Loma, San Diego, California.

Java/Swing - Database schema to Java object model code generator

Below are several screenshots from three prototype deployment tools I wrote, primarily intended for in-house use only.

The first tool, called DbToJava, is a tool which flexibly code-generates Java object classes/models by scanning DBMS schemas.  In the diagram below, the buttons represent Java classes which corresond to DBMS tables.  The arrows represent foreign key linkages which resulted in object references being placed in the Java classes.  A spring algorithm was used to auto-layout the graph.  Pressing the buttons transforms them into UML-like class widgets (see next screenshot).  Here is a brief WMV video demonstrating this tool.

All screens coded in Java/Swing.

This DbToJava view shows the expanded view when the above buttons are pressed:

This DbToJava tab allows the user to alter the automatic Java name generation from the database table/column names.  Note that the Java classes have been hand-edited to be singular even though their corresponding tables have plural names.

Coded in Java/Swing.

This table shows the DbToJava tab depicting some of the foreign key relationships derived from scanning the database.  Coded in Java/Swing.

Java/Swing - Basic Database Designer

A different tool below, called DbDesigner allows the user to create/design a new database, or scan an existing database and convert it to another vendor.  This view shows one of the table tabs derived by scanning an existing database, including foreign keys and key parts/indexes.  Here is a brief WMV video clip demonstrating this tool. 

Coded in Java/Swing.

This DbDesigner view shows part of the MySQL SQL creation script automatically generated by scanning a Microsoft database schema:

Coded in Java/Swing.

A third tool was a Java class designer/code generator tool.  It automated several coding steps such as clicking on implementing interfaces.  With this tool, the user could click on the desired interfaces to be implemented and had the option of 1) generating the interface methods and supportive fields directly in the class, or 2) using a pre-existing interface delegate class to which the interface method calls would be delegated in which case an instance of the delegate class wold be added as an attribute of the class being created.  At the time this tool was written, Generics were not part of the Java language, so this tool also generated type-safe collection classes based on Vector and Hashtable.  This tool was embedded in multiple DbToJava screens  and some of its code generation capabilities are demonstrated near the end of the DbToJava WMV video clip located here.

Coded in Java/Swing.

Basic Semantic Web Ontology for Astronomy

Here is a simple, incomplete, illustrative RDFS Astronomy ontology.  If you paste the RDF/XML into the W3C RDF Validator, you will see the auto-generated diagram below.

(To generate a graph/diagram, you must first select "Triples and Graph" under "Display Result Options" before pressing the "Parse RDF" button.)

Basic Filesystem Ontology

Here is a basic file system RDF ontology I created as an exercise when first learning RDF.  RDF has tremendous potential to transform and improve almost all software and the Web.

Here is the W3C Validator graph of this ontology:

RDF validator image graph of simple filesystem ontology

C/DOS - Teleradiology Image Processing capture & archival workstation

Here are some very old C/DOS medical image processing applications I wrote (including the pixel-level GUI lib) around 1993.

Note that even though the first and second screen shots have different GUIs, they are in fact screen shots of the same .exe file. 

This was possible because the software's GUI could be completely reconfigured by end users simply by editing text files.

This software also used a plug-in architecture for the image capture service and had other advanced features such as a user configurable schema for the image database, user-defined image attributes embedded into the image header structure, and much more.

(Be sure to view the first and third images at full-resolution.)

Same application with Thumbnail View in effect.  Note graphical XOR overlay on first image second row which allowed users to assign display positions in 4-up display screen above from the Thumbnail View while selecting the images to display. 

All partitioning of the full-resolution and thumbnail screens was user-configurable. 

For example, the Thumbnail View could be partitioned into arbitrary numbers of rows and columns such as 1x1, 2x1, 2x2, 3x3, 4x4, 5x5, 8x8, etc. 

(The same goes for the full resolution view mode screen above.)

Here is a view in split screen mode where full image resolution is displayed on the left while a "full-view" image is displayed on the right:

Here is a close-up of a contrast enhancement algorithm applied to scanned X-rays (including scanning artifacts).  The unenhanced images are on the left and the corresponding enhanced images are on the right.  This particular algorithm is called Contrast Limited Adaptive Histogram Equalization (CLAHE).  I once got an idea for an X-ray light box that could do the same thing with film.

C/DOS - Very early/basic UI button widget library

Here is a sample from a basic image processing pixel-level GUI library I wrote in C/DOS circa 1992.  The library drew every pixel including the font and cursor pixels using a raw C pointer directly to the VGA VRAM memory.  Real-time contrast modification was implemented by directly writing to the VGA chip's color palette memory.  Users could easily define and and aggregate their own customized menus systems by editing simple text files.  The system included context-sensitive help and highly-streamlined click-count user interactions.  A simple multiprocessing technique allowed the user to interact with the GUI during long-running image processing operations.  Operations included image region statistics and histograms of arbitrarily shaped regions/blobs via a seed growing/region filling algorithm, distance, graph-pixel-values-along-a-line, draw cubic-spline boundaries  in overlay layers, automated detection of endoluminal wall boundaries from noisy cross-sectional ultrasound images, image subtraction, bi-quadratic image registration, real-time bilinear-interpolated magnifying glass, and more.

Copyright (c) Richard Creamer 1992 - 2017 All Rights Reserved