Lissajous 3D

Welcome , Images , Colours , Commercial Use , Screen Saver , The Musical Connection , The original Lissajous Curve , The 3D patterns , Trouble shooting , How to purchase

Hide contents , Show contents


Intro , Background Information , Turning and moving the shapes , Support and updates

skip to next section


Lissajous 3D has tool tip help - hover the mouse over a button, text box, drop list etc to see it. Often the tip will end with a three dot ellipsis ... - this means that it has more help available. To show the extra help for the most recent tool tip, press F1.

So, you can find out most things by reading the extra help. This help will give an overview and mention a few things useful to know.

To find the example shapes try File | Open , or File | Files for a drop list.

To make yoiur own shapes, for a quick start try the Wizard . It is intended for young children especially, but anyone can use it. The wizard has several pages so once you have gone through the first page be sure to press the Next Page button to go on to the other things you can do.

If you want to understand how the curves work, see the short introduction to the curves at the start of the The 3D patterns section - How the curves are made - tutorial , and to find out about more advanced things you can do with the curves and the various ways they get transformed, have a look over Features and options in the same section

top , start of section

Background Information

Jules Lissajous was a french scientist who lived in the nineteenth century. He generated the curves that later got his name by attaching mirrors to a pair of tuning forks. These beautiful curves are well known to any physicists who are particularly interested in the physics of sound, but not so widely known otherwise. To read a bit more about Lissajous see: Jules A Lissajous (at the Mac Tutor history of mathematics archive ).

The original curves are two dimensional. This application extends his idea to 3D by using three or more simultaneous oscillations. The idea was inspired by Barbara Hero's work on musical connections with the Lissajous curves - it is a natural idea to extend it in this way because musical chords often have three or more notes - triads rather than diads. I did the curves originally still in 2D, with more than one oscillation permitted simultaneously along each axix. The idea of showing these curves as 3D patterns was suggested to me by the composer Charles Lucy after he saw some of the patterns I'd made.

I then found out that such curves are already well known to knot theoreticians as Lissajous knots. Knot theory, or the study of the patterns that knotted loops can form, is an advanced field of modern mathematics - an interesting field indeed with surprising connections with other areas of mathematics and physics.

top , start of section

Turning and moving the shapes

To turn the shape, left click and drag. Alternatively, vary the spin position in the Move window.
To move it around horizontally or vertically, right click and drag - or vary the across and up fields in the Move window.
To move it nearer to you, or further away, hold both buttons down at once and move the mouse up or down, or vary the Depth in the Move window.

You can get faster movement if desired by holding down various combinations of the Ctrl, Alt or Shift keys as you drag with the mouse or click on the up / down arrows. The Shift key down doubles the speed, the Ctrl key triples it and the Alt key quadruples it. You can use several of these at once - if you hold down all three then the speed multiplies by twenty four. It is easy to lose the shape out of the window with the fast movement options - if this happens you can get it back again using Shape | Reset Position .

This idea of holding down various combinations of Ctrl, Alt or Shift to change numbers more quickly works with all the up / down arrows in Lissajous 3D.

You can set the shape spinning too. The technique here is to click and drag, and release the button while the shape is still turning (so while the mouse cursor is moving). You can switch this feature off, or on again, from Move | Mouse up sets spinning .

You can set the shape swaying back and forth as well, from Move | Sway . It can spin and sway at the same time - swaying around as it spins. Since the sway gets added on top of the spin, sometimes it might rather have the effect of speeding up and slowing down the spin periodically as it whirls.

Some of the examples change shape continually. This is set using Shape | Let the waves drift by . Again your shape can do all these things at the same time - spin, sway and change shape all at once.

You can pause everything - movement and shape changes. from the Pause / Play button you see in various places such as the Shape or Move windows. You can pause just the shape changes from Shape | Pause wave drift .

If the shape is spinning, you can pause just the spin, and let it continue again by selecting or unselecting. Move | Let shape spin .

You can get back to the help page your are reading now from Help | Intro and Overview window in Lissajous 3D, or using Shift + F1 .

top , start of section

Support and updates

If Lissajous 3D doesn't work as expected, first see the Trouble shooting section. Then if not yet solved, contact Robert Walker at . Be sure to contact me also if you have any questions at all, or any suggestions for new features to think about for the future.

For updates, visit the Lissajous 3D download page . At times my programs may get updated rather often with minor updates, so that keen users of the program can try out the newest features as soon as they are available. The version number doesn't change each time for those updates. So, to check to see if your copy is newer, go to Help | About and compare the date there with the date on the download page. To update your copy of Lissajous 3D, just run the setup program again. It is okay to install it on top of your existing copy.

You can check for major updates from Help | Unlock (or User Info) using the eSellerate update checker. You will get a message about whether or not a major update is available, and can then go on and use the wizard to download it if it is - or alternatively you can just go to the download page and get it yourself.

This will keep you up to date with any major changes which involve version number changes. The wizard will ask for details of your name etc there if you follow that route, but as the updates are all free then this information doesn't actually get used and you won't be charged anything.

Several opt in lists are maintained for announcements of new releases, or updates. If you want to be informed about every update of Lissajous 3D however minor as soon as they are uploaded, contact and say that you want to be put on the Lissajous 3D update list.

I have another update list for those who want o be informed about any other new 3D programs released - I have plans to develop more eventually over the next few years. Indeed you can also opt to be informed about all new releases of any of my programs as they occur.

The download site is and there you will find Virtual Flower (another 3D program), and the music program Fractal Tune Smithy which can be used in conjunction with Lissajous 3D (as you will find out if you try the relevant options in the Opts and Scr Svr windows). You will also find some other apps, and new ones get added from time to time.

top , start of section


skip to next section

Single images , Animations , Send your image as an e-card , The Lissajosu 3D format , Gif support - not yet

Single images

You save the images, and set the image size, from Images | Image Size and Save Image As . You can also save the image and e-mail it to someone all in one go from File | Save Image As and E-mail .

To copy the image to the clipboard, make the main window your active window (e.g. click on its title bar) and use Ctrl + C . Alternatively, use Ctrl + Shift + C , which you can use at any time when working with any of the Lissajous windows.

You will find a choice of various file formats for the image save. Perhaps a brief guide to these here may be useful for newbies..

The Bitmap (BMP) is the best to use if you want to edit your image in another Windows program. The PNG format is an alternative with a smaller file size - check the other program can read it though.

If on the other hand you need a small file size, for instance to e-mail to someone or to use in a web page, select JPG or PNG . Most images work well in either format. Both use True Color (24 bit) . The PNG s are lossless, unless your original image has the even higher 32 bit colour resolution. This means that your saved image will look identical to the original. The JPG s are lossy. Lower quality jpegs particularly give much smaller files than PNGs, but the trade off is that there is some loss of quality, and you may get artefacts in the resulting image.

Bitmaps are normally fairly large files. The size depends on the colour depth so you can make them smaller by reducing the colour resolution, with some loss of quality. However, they are not normally the best choice for e-mails or web pages.

You may notice that there is no save in the GIF format. This is for patent reasons, because of the extremely high amounts you currrently have to pay to add support for this format to your application (thousands of pounds). It will be possible to add it later on this year (2004). Technically you can add support for uncompressed gifs without paying royalties, as the patent only covers the compression algorithm, but uncompressed gifs are too large to be of any great interest.

top , start of section


You can make the animations from Images | Make Flash Movie or Animation Frames... .

You can also save the animation as animation frames which you can convert into an animation in other programs - for instance you could use a gif animator to convert the frames into an animated gif.

You can also make an animated jpeg in flash format directly from Lissajous 3D here. This saves the individual animation frames as jpegs, then they all get joined together into a flash movie which you can show in a web page. You only need to upload the .SWF file to include it on your web page. The jpegs that you find in the animation frames folder are intermediate steps in the construction of the SWF file.

You can also make an animated PNG. This is a good substitute for an animated gif, without the limitation on the number of palette colours that you can have in a gif. Gifs are limited to 256 distinct colours per image,which is sometimes a severe limitation particularly if you have images with continuous gradations of colour.

As with the single images, the animated jpegs are lossy, with some degradation of quality, but compensating smaller file size. The animated pngs are lossless for images originally in True colour (24-bit) or less.

top , start of section

Send your image as an e-card

You may be interested to know that my music composing program Fractal Tune Smithy can make e-cards. You can only send these using Outlook Express or other programs that can work with the raw "eml" format (most e-mail programs can't read it). However, any e-mail program will be able to receive them.

You can use any image on your computer so in particular you can use FTS to send your Lissajous 3D images as e-cards. They are musical e-cards so optionally you can also add music to the card, again any music you have on your computer (though obviously you will want to send small files only by e-mail). The music gets sent as an attachment, and if your recipient also uses Outlook Express you may also be able to include the music as background sound so that the recipient hears the tune play as soon as they look at your card.

There is another way to send the FTS e-cards which may be useful if your e-mail program doesn't recognise the raw ".eml" format.. You can use FTS to make a web page for the card which you may be able to send as an e-mail by selecting an option in your e-mail program to send it " As HTML " or some such. Maybe " As Stationery ".

top , start of section

The Lissajous 3D format

The File | Save As option saves your work in the Lissajous 3D format (*.LJ). This is only understood by Lissajous 3D. It has data about things like the number of waves in every direction that wouldn't mean anything to any other program. Be sure to save your work in this format so that you can come back to it later and edit it in Lissajous 3D again. You can send files in this format too, however your recipient will need to install Lissajous 3D in order to see your animations in this format.

You are recommended to save your work as Lissajous 3D files when you are working on them in Lissajous 3D so that you can open them again later and change them in Lissajous 3D. Then when you want an image or animation to use in a document, web page or other program, you can save them again in the image and animation formats understood by other programs

top , start of section .

Gif support - not yet

There is no gif or animated gif save yet - the plan is to add this in summer 2004. The reason for this is that patent royalties are high (thousands of dollars) for any programmer who wants to include a save in the .gif format as part of a program. The patent is for the LZW compression method used to make the gifs small.

Technically you can add support for uncompressed gifs without paying royalties, as the patent only covers the compression algorithm. However, uncompressed gifs are large so they are seldom implemented.

The patent doesn't run out in Europe until summer 2004 though it has already run out in the US. Since the software author lives in the UK then the Europe patent law surely has to apply.

top , start of section


skip to next section

To change colours click on the colour patch and then on the colour wheel. This shows the hue - pure colour - around the edge of a standard colour wheel. This consists of the rainbow colours of the spectrum, with purple added to close the circle around from blue back to red.

To make it more intense or more washed out and pale use the saturation bar, which mixes white in with the pure colour, and to make it darker or lighter use the brightness bar. Use the drop list of colour names at the top to find named colours, for instance, browns are dark reds or oranges. You get greys, white or black if you set the saturation level to zero.

You can also show a colour disk, clover or rectangle. The disk shows the colours shading to white at the centre, so saturation varies radially. The rectangle shows hue horizontally and saturation vertically - you are probably familiar with this from the conventional colour chooser dialog in windows. With all of these, you click to choose the hue and saturation, then use the brightness bar to adjust the lightness or darkness. The clover is just included for fun, with saturation again varying radially.

The colours around the colour wheel consist of the three primary colours of light for monitors - red green and blue, and the three primary colours of ink for colour printers - green, cyan and magenta. If you are interested to know a bit about this choice of primary colours for the devices, I've done a page about it: Computer Primary Colours - background info


Commercial Use

skip to next section

Since these are demo shapes particularly included to help users get started, then it is fine to use them commercially. You can copyright your own shapes made with Lissajous 3D. You have my permission to use the ones that come with the program too.

The installer itself is freely distributable.You may include it on any program download site or CD compilation - for program details see the pad file: lj3d_pad_file_esell.xml .You may not sell the evaluation copy. You may not charge for other users to use :Lissajous 3D. If you wish to use the program itself in a commercial fashion (rather than images or animations made with it), or use the program itself to promote other commercial products, please contact me first to discuss ideas or make arrangements.

This is not to be considered as a legal document, it is just information to help Lissajous 3D users understand how I see the situation. If you have any questions at all, be sure to contact


Screen Saver

skip to next section

Selecting and configuring the screen saver , Desktop shortcut , Music , Using Play lists

Selecting and configuring the screen saver

You can set Lissajous 3D as your current screen saver from the Display window - Start | Control Panel | Display . Choose the screen saver tab and select Lissajous 3D from the drop list.

You configure it using the Settings button in that window. You can also configure it from within Lissajous 3D itself from the Scr Svr window. In Lissajous 3D you can play the screen saver shapes, and see the effect of your changes in the window by using the Play Screen Saver Patterns Now button.

Amongst other options for the screen saver, you can change which aspects of the patterns get randomised, or choose the music you wish to hear (if any).

The screen saver normally gets installed when you run the setup program for Lissajous 3D. If you don't see it listed, run the installer again and check to make sure the option to install the screen saver is selected.

top , start of section

Desktop shortcut

The setup program makes a desktop shortcut to the screen saver (normally selected again unless you unselect it). You can use it to start the screen saver from the desktop. The idea is that this gives a way to start it up at any time if you want to see the Lissajous 3D shapes swirling around on your screen.

When you run it this way, it starts immediately, so you don't need to wait for your computer to go into idle mode. It will also run no matter what you have selected as your current screen saver. Your choice for the current screen saver remains unchanged

top , start of section


The music clips that come with the screen saver were made using Fractal Tune Smithy . You can also use this music app yourself to make new music for the screen saver. There is no need to be a composer to use it, or indeed to be able to sing or read music or play an instrument - it is easy to use even if you have no musical background at all. Just run the program and you will find that you can make new "fractal" music with it instantly by varying the parameters. You can also run the program itself in the background to make background music for the screen saver, letting it randomly vary the parameters itself.

You can use any other music you have on your computer with the screen saver too. Just browse to the clips using the Open button for the music drop list in the Music Options window (from Scr Svr | Music Options in Lissajous 3D, or the Screen saver Settings | Music Options ). You can choose to play the same clip every time, or you can play a random selection of any of your tunes in a particular folder.

It's also worth remarking that you can play CD tracks too. This works well with the random selection option, as it will accompany the screen saver with a randomly selected track from whichever CD you have currently in you CD drive. Change the CD in your drive, and the music for your Lissajous 3D screen saver changes :-).

top , start of section

Using Play lists

You can also use a play list for the screen saver, which can consist of any mp3s you have access to from your computer, in any order. It is easy to make an m3u play list.

In its simplest form all it needs to be is a list of the names of the files you want to play one to a line in the order you want to play them - and start with #EXTM3U as the first line, like this:


where first_file.mp3, second_file.mp3 etc are the names of the music files you want to play. If they are in the same folder as the m3u file, just give their names, otherwise use the complete path c:\music\first_file.mp3 or whatever it is.

Then save this list of music clips as a file with the extension ".m3u", making sure to save it as plain text if you have a choice. That file is your play list and you can now play it in Lissajous 3D or indeed in any program that can play m3u play lists (many music programs that can play mp3s can do this).

This is a format which was originally developed for WinAmp, and has now become the standard play list format for mp3s.

If you want to use your play list in programs such as WinAmp or Windows Media Player, you may want to specify the title for each clip, and indicate the length of each track. The format with those included as well is:

#EXTINF:120,first title
#EXTINF:120,second title

where 120 here is the length of the track in seconds - replace it by the actual length of the track so that your mp3 player can display the length of the track.

top , start of section

The musical connection

skip to next section

The original Lissajous curves have a musical connection as they were generated using tuning forks. This application was inspired by a musical connection too, Barbara Hero's Lambdoma keyboard.

The musical connection can be followed up using my Fractal Tune Smithy (FTS) program, which you can get from the Fractal Tune Smithy download page .

Getting Started

Once you have installed FTS, start it up, and start up Lissajous 3D as well. In Lissajous 3D select Opts | Change shape in response to Fractal Tune Smithy tunes .

Now, every time you play a chord in FTS yourself, or play one of its tunes with chords or several parts, your Lissajous 3D pattern will change in response. A good choice of pattern to experiment with will be one with a continuous ribbon or tube - such as the African shawl, polished gold rope, simple 3D Lissajous, etc etc.

Then see Musical chords and their Lissajous patterns

Incidentally, you will find a Lissajous button in FTS from in View | Player and View | Lambdoma . This brings up a 2D pattern - it is made from the same number of waves, with more than two allowed, but all shown as 2D curves. This program Lissajous 3D was developed as a way to explore the same patterns in 3D :-).

top , start of section

Techy note

This doesn't work with any other music programs as of writing this - it only works with FTS. It works because FTS communicates with Lissajous 3D directly while it is running to send it information about the chords played.

Lissajous 3D doesn't attempt to analyse the music played itself to find the actual constituent pitches of a chord. That is technically very hard to do indeed, if the notes are played on instruments with complex timbres.

It works instead with the originally desired pitches, and needs this information to be provided by the original program that played the notes. However, if you are a programmer yourself, and wish your program to interact with Lissajous 3D in the same way as it plays notes, contact for details and I will explain how it is done.

top , start of section

The original Lissajous curves

skip to next section

The original curves used just two oscillations. The idea is that you start with a point oscillating up and down - and then add another oscillation left and right on top of that, and run both simultaneously and see what happens.

If our point oscillates up and down in the middle of a screen, it will trace a vertical line. If instead it oscillates left and right it will trace a horizonatal line. If it oscillates in both directions at once then it will trace a curve - and the curve depends on how frequently it is oscillating in each direction. It draws a circle if both oscillations are the same frequency, a pattern of eight if one is twice the frequency of the other, and so on.

So that basically is the idea of the original Lissajous curve, to use two oscillations at once to trace the curve. The original version used mirrors attached to tuning forks to reflect light, and the moving beam of light that resulted traced a curve through persistence of vision

Physicists can make the curves on oscilloscopes nowadays. They tweak them so that the horizontal scan oscillates instead of moving continuously from left to right as it normally does. They set the horizontal scan to a frequency which is in some pure ratio connection with the oscillation shown vertically - and then the oscilloscope traces a Lissajous pattern.

You can also draw them using two pendulums. One pendulum has a drawing board mounted above it which oscillates left right, say, with one frequency, and the other pendulum moves a pen which oscillates backwards and forwards above the oscillating drawing board with another frequency. The frequencies depend on the lengths of the pendulums, so if you adjust the lengths accordingly, you can get a Lissajous pattern again - at least, you would in the ideal situation with no friction involved. In practice, if you try out the experiment, you will get friction effects, and gradual decay of the swings, leading to a more complex pattern.

On line links to pages about Lissajous patterns: A java applet to explore Lissajous curves - the Lissajous Lab . For many other links about Lissajous see the > Scientists > Lissajous Jules .

You can make two dimensional Lissajous curves in Lissajous 3D by switching of the third frequency in the Shape - the pattern will then lie entirely within a plane - though of course you can rotate it to see it at different angles - and using Ribbon | Tube you can make it from a 3D tube.


The 3D patterns

skip to next section

How the curves are made - tutorial , Features and options , The magnet and planet , Techy note about the magnet and planet options

How the curves are made - tutorial

So now that we have seen how the two dimensional curves work, what about three oscillations, in three directions. This will trace a more complex curve, in fact a curve in three dimensions, and the result is known as a Lissajous knot. You can see a picture of one on-line here: Lissajous Knots .

So that is what Lissajous 3D does. You can use the Shape window to set the numbers of waves per cycle for each direction in space. These correspond to the scan frequencies of the physicists oscilloscopes.

What matters are the ratios between them - so if you had the numbers 2 3 5 for the waves per cycle , you could just as well have them as 4 6 10 (all doubled), or 1 1.5 2.5 (all halved) or any other multiple of those three numbers. All will give the same pattern.

The wave shift in this window sets the position that each of the waves starts in in its cycle. To understand this, let's start with two synchronised oscillations.

This experiment may not work too well with a narrow ribbon as it may get so thin as to be almost invisible in 2D, so for this experiment, either use a wide ribbon, or perhaps better, use a tube.

A good idea is to start with the Simple 3D Lissajous or one of the other example patterns based on a tube. If you have an old slower machine, reduce the number of sides to 4 in the Ribbons window, and you can also reduce the number of steps per cycle to say 100 or 50 instead of 200. (You can also try the strips, which are faster, but those will vanish in the case where the shape is a straight line.)

So first go to the Move window and click Stop Movements and Stop Shape changes for your chosen pattern, as those continual changes in the pattern will confuse things.

Then in the Shape window, unselect all except the first two (across and up) waves so that you get a 2D pattern. Set the across and up numbers of waves per cycle both to one. You should now see a tube or ribbon forming an ellipse.

Then to find out what the wave shift does, first set the wave shifts for both your waves to zero. You should see a straight line.

What happens is that the point tracing the curve moves back and forth left to right, and simultaneously moves from the top to the bottom, and so you see the diagonal of a square - a straight line. Note - the actual direction of the line in the window depends on what position you turn the pattern to - the main thing is that you should see a straight line at this point.

Now, instead, start the first wave a quarter of a way through its cycle - set the first wave shift to 90 degrees (a quarter turn). You will then find that it shows a perfect circle (you may need to turn it around to see it).

The point tracing the curve now starts its left right oscillation at its left-most postion when the up down one is in the middle of its movement. This means that it starts at middle left of a square. If you work out where it should go, you will find that as it continues it visits top centre of the square when the left right oscillation is in the middle of it smovement and the up down one has reached its furthest point. Then it visits the middle right, and bottom centre, and in fact visits the middle of all the sides. It does this in a smoothly changing way, and traces a circle for the in between pionts.

Try other values for the wave shift between 0 and 90, and you will find that it will trace an ellipse.

You can watch the motion around the curve using Shape | More Shapes | Swoop around the curve . If you don't see anything here then increase the swoop amount - ten percent or so is about right for most patterns.

Try switching the swoop on and off, and switch the individual waves on and off too, to get a feel for how the curve gets generated. Then you can try out the same thing with other numbers of waves in both directions to get a feel for how the wave numbers work, and how the wave shifts work.

So anyway that introduces the idea. The 3D curves work the same way but with a third oscillation inwards and outwards as well.

top , start of section

Features and options

The patterns get transformed in various ways in Lissajous 3D. Some shapes are made with a small number of steps per cycle in the Ribbons window to get an effect that looks a bit like those string patterns you can make with a loop of string - for instance the Hazy sea creature is done like this. Sometimes the idea of a small number of steps is combined with wide ribbons, so wide that they make large flat surfaces, for instance for Tipsy Poly .

The ribbon is also sometimes so wide that it spans across the middle of the pattern (even with smoothly changing curves) as in the Morphing CD . You can also twist the tubes, as in the Twisted Brass pattern for instance. Other patterns have a shape that is a fragment of the pattern swooping around the curve as in the Autumnal colour leaf swoop and the Deep sea darting fish , using Shape | More Shapes Options | Swoop around curve ..

Also some of them use another idea - to set the number of steps per cycle to one so that the entire pattern that you see consists of just a single step. Then show maybe one cycle only, or many, and use tubes, and vary the ribbon width and the number of steps across the ribbon.

Couple this with the star polygon cross section and you get the twisted star polygon visitors , and various other such ones like that which consist of spinning and moving patterns dancing in a kind of a ballet. You wouldn't 'be expected to be able to recognise the original Lissajous pattern in these- rather, it affects how the shapes move about.

You will find that when you use ribbons (triangle or quad strip) rather than tubes, the width often varies as you go around the curve, as in the ruby and gold broad ribbon , to take an example. The way this works is that it draws the original Lissajous curve, then shifts all the waves forward a little by the same amount, and then it draws it again and joins those two curves to make the ribbon. When it is wide, this is a place where the pattern is particularly sensitive to changes in the wave shifts (the phases of the waves). If you want a constant width, show the ribbon as a tube instead.

The bead effect in some of the patterns such as the Pearl necklace at dawn is obtained by using a round tube with the option to twist the tube, with the twist set to a large number of degrees in Ribbon | Twist tube by . If the number of steps per cycle is 100 for instance and the twist is by 18000 degrees (50 whole turns) you will get beads - gets twisted by a half turn for each step in the ribbon. So the general rule is to multiply the number of steps per cycle by 180. Vary the numbers a bit around that point and you will get less distinct beads, or twisted tubes with a rope like effect. I've added a button for this, so you can make beads and such like. To use it, first select a round tube, and set the number of steps per cycle to any number you like, then press the Make Beads button to add an appropriate twist to make the beads effect.

Some patterns use special options in Shape | More Shapes . See for instance shape_with_magnet , or magnetised golden spiral which use the magnet, and shape_with_planet for the planet. Ones like the mountain vista with a pattern that gets smaller and smaller use damping. Squarish waves effect uses the alternative wave shape - see the tool tip help for the formula itself to find out how it works ( techy note - you can only have nested functions there currently such as sss for sin sin sin x). Simple 3D Lissajous with inversion in sphere uses inversion in a sphere - similar to inversion in a circle. Techy note - to find the inversion of a point in a sphere, you find its distance from the origin, and if the radius is r and the distance is d, you move the point out to its inversion which is at a distance of r/d from the origin. You can find out more about this and some of the various curves you can make from Lissajous curves (and other curves) in 2D here: Lissajous Curves (on-line page at the University of St Andrews Mac Tutor History of Mathematic Archive ).

The transparency effect used for some of the patterns is a bit glitchy, but is included anyway. One of the glitches is rather nice and the other is often not too noticeable. First, you get a kind of ribbing effect as you see in " day full of promise " for instance. I'm not sure why this happens, except that probably it is not smoothly changing the colour across the polygon in quite the way as it does when opaque. Anyway if I find a fix for it I will leave this ribbing effect in place as an option later on (bug as a feature :-) ) so any shapes you make that rely on it will look the same as before - always I make sure that everything is backward compatible in this way.

Then also if you make the patterns fairly opaque, you may notice that various glitches appear where two parts of a ribbon intersect. You may get various patterns from bits of the ribbon behind showing through. Also little regions of the ribbon where it intersects with itself may change their apparent position, in front for a while then behind from time to time. If you want to see if you can do anything about this, try varying the amount of transparency, and try it with or without the depth buffer, but you may have to live with it for now.

Techy note on the transparency issue for anyone interested

In order to do transparency properly in the 3D environment I am using here (Open GL) you should order all the polygons first in depth order - and every time the shape turns to another position you need to re-order all the polygons. I've done that for the ribbons (though not for the tubes) - that isn't so very hard to do though it does have its tricky points indeed.

However if you want intersecting shapes to be rendered properly, you also need to go through and split any polygons that intersect with each other. This is quite complex to code, and all the polygon splitting can also slow things down a fair amount too. I have left this out for now, but may add polygon splitting later. So that is the reason for the intersection glitches.

You don't need to do this splitting when the polygons are opaque as Open GL is able to draw the polygons properly without it using its depth buffer - but when they are transparent then its depth buffer no longer works quite correctly, so you have to split intersecting transparent polygons if you want to be sure that they are rendered correctly. Maybe I will implement this at some later point. Meanwhile it works reasonably well if you make it fairly transparent. You can experiment by switching the polygon sorting and the depth buffer on and off from the Colours dialog. The polygon sorting option here isn't currently implemented for tubes so you will only see it for quad and triangle strips.

Some combinations will work better for some patterns and some for others. This web page describes the issues involved: Alpha-blending and the Z-buffer

top , start of section

The magnet and planet

The Shapes | More Options window also lets you do things like add decay or friction or a magnet (or planet) - these are inspired by the actual physical experiments - but are intended purely as a source for interesting visual effects. Don't expect the modelling to be so very exact here.

The impulses caused by the gravity or magnetic field get added to the original motion of the curve. One way to think of it is to suppose that the Lissajous curve is traced by a rocket pre-programmed to fire its motors to trace the curve in free space - and not programmed to compensate for the presense of any other forces. The magnet or planet perturb its motion, and so affect the curve it traces, but it just fires the same sequence of rocket impulses whether they are there or not. Then, if you switch off the gravity or magnet then it will follow the Lissajous curve as usual. If you switch it on then the curve gets perturbed.

So, it won't normally go into a normal elliptical orbit around the planet for instance, because of its original motions (the pre-programmed rocket impulses) which are still going on in addition to the gravitational pull. Instead it continues to trace the Lissajous pattern but one that is transformed as a result of the perturbations of the planet.

Technically all I did (for those mathematically inclined) is to look at the Lissajous pattern as if generated by a moving point, and find the velocities needed to trace the curve. Then I perturb those velocities by the forces regarded as a series of impulses acting on the moving point. Then I find the curve that results, which is what you see.

If you want to test to see what happens with the rocket engines switched off as it were, try the test in Shape | More Options | Set up for Test .

Thanks to Christopher Taylor for his account of experiments he did making real Lissajous curves using pendulums, with friction, decay and a magnet. It was as a result of thinking about these that I added these features. He is a mathematician and amateur astronomer - his web site is the Hanwell Community Observatory .

top , start of section

Techy note about the magnet and planet options

The magnet and planet options model the force as a series of impulses following the inverse cube and inverse square law respectively - so the more steps you have per cycle then the closer the result is to the exact curve you would get for a real magnet or planet. The way it does the modelling isn't particularly optimal, it just uses a simple method which is good enough for our purposes here, which is primarily to make interesting patterns.

As a precaution, if the ribbon has very few steps, it won't reduce the number of calculation steps to any less than about three thousand steps or so in order to make sure that it is at least reasonably accurate. In this case it calculates the intermediate positions, but only joins together the ones of those that you need for the ribbon.

top , start of section

Trouble shooting

skip to next section

Lissajous 3D won't start - what can I do?

Lissajous 3D requires OpenGL to function. This is included as standard with all Windows operating systems since Windows 95 SR2 so you probably have it.

Your graphics card also needs to support it. Modern ones (since 1999) normally do. If necessary, check for an updated Open GL driver for your graphics card from the manufacturer's web site.

For more about this see the OpenGL site: Installing and Using OpenGL

I get a report of missing dlls opengl32.dll or glu32.dll, what can I do?

This is possible if you still have the earliest release of Windows 95, which didn't have OpenGL included. You can get this update from: OpenGL 1.1 Release Notes and Components for Windows 95 Version Upgrade

Lissajous 3D runs very slowly, and when it runs it is hard to work with other programs, what can I do?

Three dimensional animations like this are computing intensive. If you find that your computer gets slow to respond, check the settings under Opts | Animation timings . These are designed to make sure the graphic rendering pauses frequently for a few milliseconds at a time, which will normally make sure that other processes can continue to work at the same time. The settings here will be suitable for most, but if necessary you can increase the length of the pauses and reduce the maximum time for each frame.

The option to pause every hundredth of a millisecond anyway whatever happens needs some care. This will indeed help reduce the cpu load, and works fine at the standard setting for it, of 2 ms, but if you set it high it may slow down the animation far more than you expect. I'm not sure why this happens. I have added a note about this to its tool tip help. Best to keep it low, but experiment and see what works best on your system. It may work just fine even when large (20 ms would be large here).

Also, the 3D tubes are slower to render than the other ribbon shapes, so you can try Ribbons | Disable tubes - which will show all the tubes and twisted tubes etc as flat ribbons (triangle strips).

How can I get Lissajous 3D to run as fast and as smoothly as possible?

If you have a zippy computer and graphics card, you may wish to unselect most of the options in Opts | Animation timing .

Note however, if any of your patterns takes any appreciable time to render, even if it is so little as a second or two per frame, you may want to keep one of the options switched on - the option to sleep for a few milliseconds every now and again during the tube or ribbon construction. This makes it possible to interact with the program while it is in the middle of rendering the patterns. If you switch it off you may find Lissajous 3D itself (not your computer) is occasionally a bit slow to respond to the mouse or the keyboard. This is preset to 4 milliseconds every 40 ms, which won't slow things down much at all so will be suitable for most - however you can try other numbers there and find the best balance for your computer between easy interaction with the program and the fastest possible animation.

I want to show a complex pattern and only part of it gets made, what can I do?

Increase the time for each frame if you want to render a particularly complex lissajous pattern without the time out cutting in after two seconds. See Opts | Animation Time Outs

It doesn't matter how fast your computer is, as you will always be able to make patterns so complex that they require seconds to render if you specify enough cycles to draw and use patterns that don't close round quickly to complete the curve. There is no practical limit to the complexity of the patterns you can make.

Technical note on the timings

The ribbons are drawn using the OpenGL library itself. In this case it was easy to introduce pauses and cut outs as the ribbons are constructed one triangle at a time using calls in Lissajous 3D itself.

However, the library that's used to make the tubes and twisted tubes and beads is another matter - the patterns with Ribbon | tubes . This requires you to draw the entire tube in one go, so normally you have no way to stop tube construction once it has tarted.

The original library is called gle.dll and is a tiny dll, so the extra download size for a modification of it is of no significance. You will find that you have a version in your Lissajous 3D folder called gle_for_lj3d.dll .

What I did is to get it to peek every now and again to see if there are any mouse movements or keyboard events etc to deal with while it is constructing the tube. This lets the calling program monitor the mouse and keyboard during tube construciton, which makes it easier for a user to interact with Lissajous 3D while it is making shapes that take a while to render. It also gives an opportunity to sleep regularly every so often during tube construction. One can use this to reduce the cpu load to make it easier for a user to work with other programs while it is constructing the tubes.

I also added a feature to let the program vary such things as the material properties (not just the colour) along the length of the tube.

None of your other OpenGL programs will be affected by this change as the dll name is changed too - so they won't recognise it as the same dll. The source code for this mod of the gle dll is available for anyone who wants to use it with their own programs or further modify it - at


How to purchase

Just go to Help | Unlock . You can purchase Lissajous directly from within the program using eSellerate technology (secure order).

If you have any questions at all, contact

See also, Will my unlock key work on any computer? (answer is YES!)

top , start of section

Product levels:

Individual user and Home Use . Home users are free to use Lissajous 3D on any of their machines - you don't need to buy a site license for home use.

Multi User license - You only need this if you are getting Lissajous 3D for an organisation. It allows use of Lissajous 3D on any number of computers belonging to your organisation, and any number of users. In the case of educational institutions, the teachers may also use the program at home.