Kling Research and Software, inc



This zip file contains a save file for IDL5.3 and greater that creates a ghost slider. It is called a ghost slider as the slider is meant to appear and dissapear in an object graphics window. Example program is included.

This zip file contains the source code for a genetic algorithm that gives a solution to the traveling salesman problem. This serves as a good introduction for genetic algorithms and should be easily modified for other problems.

This zip file is a representation of the earth as seen from space. Every fifteen minutes the sun position changes and the terminator is updated. Unzip the file and using IDL 5.3 or greater type 'restore, sunclock.sav' at the command line. Read sunclock.readme for further instructions.

This zip file is the result of our creating an objects graphic equivalent to the RSI mesh_obj routine for direct graphics. Unzip the file and type meshobjectdemo at the command line to get it running. From the menu bar pull up the help file for detailed instructions. As a bonus, this file also contains rotator__define.pro. This object is a combination of a trackball object and model object that is loosely based on IDLexrotator__define.pro.

This procedure is a simple object graphics program that was done as a 2000 Christmas project. A Koch snowflake grows over time and slowly revolves in space.

This procedure is a fairly simple object graphics program that was done as a 2001 Christmas project. A Christmas tree is displayed with blinking lights as it slowly spins. This shows how to use IDLgrPolygons and IDLgrLights in object graphics programs.

This procedure is another object graphics program that was done as the 2002 Christmas project. An ornament slowly spins with randomly placed christmas lights in the background. This shows how to use the orb object (supplied with IDL) and an image to create a texture mapped sphere. The blurry lights in the background also create a nice effect.

The 2003 Christmas project is a dancing snowman. The dancing is accomplished using the double pendulum algorithm (see the boogie method). Multiple Orb objects are created for the body, buttons and face and are all translated as part of separate models. The models are then rotated using the angles from the boogie method. This is an excellent example of setting up an object heirarchy where rotating the parent also rotates all the children.

The 2004 Christmas project is an exploding present. Multiple projectile objects are created and given random velocities.  Each one is propagated (while tumbling) until it hits the "ground". Then all the letters are translated to give a Merry Christmas message.  If you have IDL 6.1 or greater the present appears as a gold metallic box.

The 2005 Christmas project is a genetic algorithm (GA) that solves for Santa's optimal flight path. The program uses the cities.dat file in the IDL distribution. Some unique features of this project is that the actual great circle distance is used by the algorithm and multiple GA parameters can be changed by the user through a simple GUI. The final route is then displayed in an object graphics window with the sunlit earth for December 24, 2005 shown. The sleigh is marked by a red glowing ball (Rudolph's nose?) which follows the path chosen by the GA. As time progress the sunlit part of the earth is updated with the three different twilight zones (astronomical, nautical and civil) distinctly displayed.

The 2006 Christmas project is a moonlit field of snow with gently falling snowflakes. The snowflakes are actual images of snowflakes mapped onto polygons. The falling/rotating motion of each snowflake is controlled using Rick Towler's quaternion object and the entire view is his camera object. For IDL6.3 and up users each snowflake's motion is controlled by a separate IDL_bridge object that calculates the position and rotation in the background.

 2007 and IDL6.4 gives us a new graphics capability called OpenGL shaders.  This years card is another snowflake but with the texture map rendered using a graphics card shader.  If you donít have a graphics card with shader capability then this card will be VERY boring.  But find a friend that has a good card and I think you will be impressed.

The 2008 IDL Christmas Card is a SNOWNADO! A large tornado made of snowflakes moves around a field picking up Christmas Ornaments and flinging them high in the air.

This card is modeled after the Tornado demo in IDL. I have always been impressed with the reality and speed of that demo. The trick to getting the speed is that it only contains one IDLgrPolygon object with multiple vertices and a separate connectivity for each square. (Creating a separate IDLgrPolygon for each square would be much slower) The event handler then takes each square and transforms its position based upon some velocity calculations. I was curious if it would work with a 3D shape like a sphere and it does. In fact
extending it to any 3D object would not be difficult. If you are looking for a way to visualize rapidly moving 3D objects then this card may be a good starting place.

2009 brings us Christmas Origami with IDL.  I was curious if I could mimic folding paper in IDL and the result is this years Christmas Card.  The trick is to set up the polygons and model heirarchy so that when you fold one piece the rest follows like it should.  This card also uses the IDL bridge to display the folding so that the main IDL session is free to do its work. This is a very useful technique that I use all of the time in my analysis. 

Make sure that both of the files are in the IDL path so that the bridge can find them.

2010 is an example of collision detection with IDL. In this card we have a user  settable number of Christmas ornaments that bounce around the view.  They not only bounce off the walls, they detect when a collision has occurred and bounce off each other.  The technique is very similar to the 2008 Snownado where a single IDLgrPolygon is used with mutliple vertices. You can change the radii and restitution coefficient of the ornaments in real time.  If your physics 101 class knowlege is a little fuzzy the restitution coefficient controls how energy is exchanged in collisions. For values less than 1.0 each collision loses energy and the balls slow down. A value of 1.0 is a perfect collision and the energy stays the same in the collision. Finally a value over 1.0 adds energy to each collision and everything speeds up.

You will also notice that we have two version this year, the Pre IDL 8.0 and IDL 8.0 and later.  IDL has some great new syntax for objects and new things like lists.  In the IDL 8.0 version the code uses the new list object , new object syntax and array indexing.  The Pre IDL 8.0 is commented out in this version but is right next to the new code so that you can see what the changes are.  If you don't have IDL 8.0 then the Pre IDL 8.0 version will work fine for you.

Alas, in 2011 I did not have time to do a Christmas Card!

2012 and I have a Christmas Card!  This is a Card using the function graphics that became available in IDL 8.0 and later.  What I do is step you through how to make a polygon filled 3D object using plot3d.  I also show a neat little trick on spawning the function graphics on the bridge so that you  can interact with them while the main IDL process is working.



Using Python From IDL is HERE! 2012 Christmas Card is HERE!  Object Oriented Programming with IDL is HERE!