Copyright ©2006 Andrew Davie
Perhaps you'd like to![]() Sign my guestbook. |
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.
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.
|
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. |
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.
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.
If this sounds like a group that interests you, consider joining. It doesn't matter what your profession or degree is, teacher, Online Masters in Nursing, engineer, or Masters in Public Administration, etc.