Projects of Kim yhus

Sometimes I get the urge to create things, and here are some of them.

Stereographic movie

Wide angle and movie by me. Compression by Roar Lauritzsen with FAST Video Transfer. 1999.11.24

Fast Video Transfer

Stereographic Fisheye Projection

Ordinarye fisheye optics, real and virtual, squeeze objects flat at the outer edges of the image.

With the stereographic projection I added to POVRAY, angles are not distorted, so objects are not squeezed flat at the edges. This allows for much higher angle of view, 270 in this picture, with less distortion. fisheye

When looking up, from the same viewpoint, all the chess pieces can still be seen due to the extremely wide angle. fisheye

Making the angle 315 is possible, and in this case makes an artistic effect. fisheye

Good waves

Now I can simulate waves with variable speed, in addition to having low dispersion. I use an improved version of my earlier constant speed low dispersion hexagonal model. Here are a couple of examples.


Click to get MPEG movie of seismic simulation.
Its about as fast as the simulation on an 450 MHz PentiumII.

This picture is from a simulation of acoustic pulses through water and earth with different speeds of sound. The two pulses are sent from the upper left corner. The left expanding wave shows clearly reflections from boundaries. The right wavefront shows interreflections too, and some reflections from the fault can be seen to the left.


This is a simulation of waves being refracted through a lens. The plane waves appear from the left, gets bent when entering and exiting the lens, and gets focused to the right. The model also shows dispersion, reflection of waves on lens, and interreflections inside the lens.

Contact me if interested.
November 1998

Embedded controller with Unix

Click on picture to view connectors.

In this case Linux, although I usually use NetBSD. I use the PC/104 system, which are cards less than 10 cm big with ISA bus as stackable plugs, making it possible to stack cards like LEGO without any backplane. My system consists of just 2 such cards, the CPU/Mothercard which also amazingly contains plugs and controllers for IDE, SVGA, RS-232, centronics, LCD, floppy, and keyboard. A fully functional computer on a tiny card. Of course some corners had to be cut, so the processor is a 386 with just 4 MB of RAM. Making Linux run, install, and compile in this small memory was the biggest problem, and not easily solved. The 2GB 2.5" harddisk sure swaps a lot when compiling kernels. Contact me if interested in details.

As I am going to use this cheese-sized PC for datalogging, I needed a datalogging card, which are usually expensive. A soundcard can also log data, they are cheaper, and can do lots of other things too, such as synthesizing sound, reading and writing through the joystick interface and other interfaces. I consider this card to be a 16 bit A/D 2 channel datalogging card, with both input and output, with some digital I/O too. This do not stop me from connecting my MIDI masterkeyboard to it and using it as a nice synthesizer.

I was the first person to run Unix on this CPU card, and OSS sound drivers on the sound card.

The system is now working flawlessly, and I am building battery powersupply, and external microphones as sensors. I expect to put some results on this page.


Simulation of waves, implemented as finite difference models of the partial differential wave equation. A time series:
wave1 wave2
Source for 8bit X11 display: wave1.c

Unfortunately, dispersion is a problem, as you can see. The waves leave a trail of smaller waves, just like sea waves do. Fine if one wants to simulate sea waves, but not for sound or electromagnetic waves.

So I developed a way of removing it, by using a hexagonal mesh, and another trick. As you can see, the wakes are gone:
Dispersion Free

3D in red and green

This looks 3 dimensional when looked at with 3D glasses that are red and green. Click on picture to get one in natural size and palette. Source code in C is supplied. It uses math and the standard Xlib library for the X11 windowing system, and runs on 8bit/pixel displays.

3D 3d.c
The green background is to compensate for bleeding of colours. The green phosphor is seldom entirely green, and the red phosphor in the screen also leaks a little green light. In addition, the filters in the glasses also have some colour leakage. The colours in this picture are optimized for the colour leakage of my monitor and glasses.

My glasses have a proper frame. The red filter is a camera filter, while the green filter is a 5 layer composite of thin breakable firealarm glass, green plastic foil, and a special Canadian transparent resin.

The program itself uses double double-buffering, meaning 2 buffers showing, while 2 buffers are invisibly drawn. This is done with 4 bitplanes and 2 different 4 colour palettes, so that only 2 bitplanes are visible at any time. This works best on newer versions of X11, since earlier versions had a tendency of delaying the palette redefinition to after the XSync is done.

HiFi on a LoFi computer

It is sometimes possible to get HiFi from LoFi circuits by using them beyond specification, and taking their faults into account. In this case I had an audio output with 3KHz bandwith, 6bit S/N ratio, and 13 bit dynamic range, which I improved to 11bit S/N, 16bit dynamic range, and 10KHz bandwidth. This was done purely by programming.
  • S/N ratio was increased by 8 times oversampling, dithering, and feedforward using a measured model of the D/A chip.
  • Dynamic range was increased as a consequence of this too.
  • The increased bandwidth was done by measuring the 4th order low-pass filter, and making a digital inverse filter. This also made the dithering better.
The Acorn Archimedes had an 8 bit sound system, where 1 bit was sign, 4 bits mantissa, and 3 bits exponent, very much like floating point numbers. The source code is supplied as a part of the application. It was the most popular program at the Hensa archive for a while.

[ hifiarch.txt | hifisample.dat | hifiarch.arc ]


The project above is just one of my digital signal processing projects on the ARM Risc processor. I have also made the fastest FFTs available. (At least for the older processors) If you need some work done, contact me.