Copyright ©2006 Andrew Davie

UniVirtual Slide Rule Emulator

Alpha, Version 0.1

Perhaps you'd like to
guestbook
Sign my guestbook.
This is a review/test page for my work-in-progress 10th Anniversary Java slide rule applet. Please review the most recent entries in the history section. If you have any comments or suggestions that will make this a better 'product', let me know and I'll do my best to meet your needs!

The original JavaSlide Slide Rule is now 10 years old. Also recently dead, due to the inappropriate inclusion of the Java™ name in the title. This new version is a celebratory companion to that version, introducing many more features.

This applet is designed to be a real-time, configurable, slide rule emulator. It currently supports zooming and on-the-fly scale reconfiguration. The emulator can handle multiple slides, and multiple cursors. Cursors can contain multiple gauge marks and hairlines. Scales can be placed anywhere on the stators, slides, or cursors. The size and texture of the rule body/surface can be changed. In short, it's totally reconfigurable!

To run this applet, you must be using a Sun-compatible Java™ Virtual Machine (JVM) version 1.4 or better. In reality, most of the known universe is running this JVM these days, except for those people buggered by Microsoft's incompatible VM from several years back. I strongly advise you to ditch the Microsoft VM (because it's not Java at all) and use a genuine JVM from Sun's site. If, after ensuring you are running a compatible JVM, and the applet still does not work, please contact me at andrew[at]taswegian.com.

Controls

As with any Java applet, a single click on the component when it starts up is required to give the component mouse and keyboard focus.

Dragging is the process of holding down a specified mouse button and moving the mouse whilst the mouse button is still held down. Dragging is typically used to move components of (ie: to 'use' ) the slide rule, or to adjust the position of the whole slide rule within the view window.

Cursor Movement

The cursor is the glass moveable window used for reading the results. Moving the cursor left and right is achieved by dragging with the left mouse button down, when the mouse pointer is over the cursor. The cursor will move left or right, within the physical confines of the rule body.. The cursor is always selected if there is more than one item under the mouse pointer when dragging starts.

A special movement mode is provided for quick-positioning the hairline of the cursor at the current mouse position. If you click and release the left mouse button, with the mouse not moving, then the cursor will instantly reposition to the mouse position.

Slide Movement

Moving a slide left and right is achieved by dragging with the left mouse button down, when the mouse pointer is over the desired slide. The slide will move left or right, within the physical confines of the rule body. Note the the cursor has priority, so you must select an unobscured section of a slide.

Moving the Whole Slide Rule

The entire rule may be positioned in the view window by two methods.
  1. Dragging with the left mouse button down, when the mouse pointer is anywhere else other than over a moveable part of the slide rule (ie: not over the cursor, and not over the slide(s).
  2. Dragging with the right mouse button down, with the mouse pointer anywhere in the view window.

Zooming

The mouse wheel (if available) will increase and decrease the zoom factor.

The up and down arrow keys on the keyboard perform the same function.

Zooming is not expanding around the centerpoint yet, so you will probably have to drag the rule to a good position once you zoom.

Removing Scales

Right-click on the scale and select delete from the popup menu. The scale will be deleted and the rule will automatically resize.

Adding Scales

Right-click on the stator or slide (but *not* on a scale) and select the new scale from the popup menu. A scale will be added on the stator or slide you selected, and the rule will automatically resize.

Tooltips

The tooltip is designed to display the scale value directly under the mouse pointer. It is currently showing temporary internal values. The tooltip appears when the mouse is stationary over a scale, and will remain whilst the mouse is moved to various other scale(s). The tooltip will disappear after it has been displayed with no change for a few seconds.

Real-time Java RMI Geometry

Here's a brief overview of some of the things I do at work...

Information used for creating maps must be validated and undergo a quality assurance process to ensure that roads actually join to each other, there are no gaps, no duplicate features, no redundant points, no overlaps, etc., etc. My latest project at Geometry has been to develop low-level QA algorithms to automatically detect and report such quality issues in multiple datasets involving the whole of Australia. This is a mammoth task, and I turned to Java's RMI (remote method invocation) capability to allow me to run a multi-machine, multi-client system that used the spare processing power of all the machines at work during their idle overnight time.

In short, the system divides the quality assurance tasks down into more manageable sub-tasks, and farms these out to available machines. The machines process their subset of data and return the results to the main server, which stores the data in a results database. Finally, the 'viewer' (also written in Java) allows real-time viewing of the results, overlaid over the original data. It's all quite impressive.

You can download a rather large (16MB) MPG of the viewer in action. It's interesting, and a very good indication of exactly what I work on and how suitable Java is for realtime remote networked graphical applications. Note that this data is being pulled live, in real time, over an Internet connection from a remote Oracle database and displayed in the interactive viewer. And it was running on my fairly low-end laptop (1.8GHz Compaq Presario).

You can see me zooming around the neighbourhood (Tasmania), and as it zooms right in to extreme levels of detail, you can see each individual surveyor's point on the roads and the boundary polygons. The mouse is used for all movement and scrolling. The tooltip is used to show the highlighted road and poly that the mouse overlays. The program itself, the monitor/viewer, is typically used for viewing results of the QA processes.

The following images show some 'snapshots' rendered by the viewer, detailing individual geometry errors found by the aforementioned QA systems. These are just clipboard copies of the actual realtime view generated by the viewer.

A pseudo-node.

Overlapping polygon data.

Overshoot/Undershoot in road.

Poly overlap. Abstract art?

Surface change/error.

Just a general rendering.

The viewer shows that Java and RMI are an excellent combination for the realtime display of graphical data pulled from remote databases over the Internet. I've very much enjoyed developing the above application -- and I would encourage anyone considering multi-machine task subdivision and/or graphics to consider this platform. Of course, my employer Geometry would probably be most interested in discussing your requirements if you need a similar system and can't develop it yourself.


International Slide Rule Group

International Slide Rule Group

If you are interested in slide rules, be sure to check out the International Slide Rule Group. This group has been running since 1996, and consists of over eleven hundred members worldwide, all interested in the discussion of, and use and preservation of slide rules and associated technology.

eXTReMe Tracker