Software Geometric chucks

Hi everyone,
Just a message to say hello again, I havent posted anything in quite a while but here is something for you retired coders like myself. Why only circular paths in software based geometric chucks?

The software we write creates virtual objects unconstrained by any physical reality. So we can choose each stage of our software geometric chuck to be any path we want so long as it is periodic (does not even have to be 360 degrees).

This gives us amazing flexibility to generate many many more ugly patterns than is possible with a mechanical chuck and perhaps even some interesting ones too. I have implemented a chuck in my windows software (very very alpha) where each stage uses any defined rosette to generate the path for that stage. So we could have a multi stage chuck where each stage was a waveform, or a polygon, or ellipse etc or a mixture. Having said that I havent seriously played with it yet as I am still writing the main code (and it is still probably buggy). Anyway if you are interested see

I hope this has given you some food for thought.
Hi Alan -- Thanks for posting the thought provoking twist on the geometric chuck.

I think your trials are very much akin to what happened in the later days of mechanical attempts at security printing (geometric lathes) which were then supplanted by software (Jura software The notion of a geometric chuck is an interesting place to start, but unbridled by the confines of the mechanical world (mass, velocity, materials), the software world can take us to new places impossible to image or implement otherwise.

But, as you also point out, the potential for "ugly" is there too.

Keep up the great and inspiring work!

Hi Alan,

We haven't met. I've been working with Mike Brooks on an ornamental lathe simulator, which was announced recently on this forum.

I have implemented the geometric chuck for this project and was wondering about exactly the same thing that you've brought up. Only I haven't had a chance to explore it yet...

But I think that there may be a slight difference between how I had envisioned it, and how you have done it. I was thinking that the number of rotations would be tied to the length of the path traversed along the circumference of the figure.

If I'm understanding what you've done, you are still tying the rotations to the headstock index. I'm imaging doing an ellipse in polar coordinates and tying the rotation of the GC to the polar angle.

I don't know how much of a difference this would make. I suppose when following an ellipse (for example), the scrolling would be a little farther apart at the long ends, and closer together along the shorter sides of the ellipse doing it your way?

Anyway, I'm interested to see what you discover! Please keep us posted!

-Bruce Frederiksen
Hi Bruce,
Of course the number of rotations of the shaft attached to the last stage will be some multiple k of a single rotation of the driving shaft and this as you know will depend upon the gearing between intermediate stages and its range is effectively between -inf and +inf in the theoretical case.

I admit that I am not sure how to work out the exact formula that would calculate the number of main axis rotations required to complete a single period of a path on the last stage. In the general case is this not only dependent on the gearing but also on the shapes of the rosettes used at each stage for example first stage ellipse, second wave, .. etc ?

I need some mathematical help here as I am silightly confused. I usually fudge the hard cases by allowing the user to experiment to find a suitable number of rotations by providing a slider to set the value and dynamically updating a plot of the path so play until it looks ok!!

So if anyone can suggest a formula for approximating the number of rotations required I would be most grateful.

Will it still not be the same problem when dealing with path length?

Re: number of main axis rotations required for GC

Hi Alan,

I believe that the formula for the minimum number of main axis rotations required for a complete GC figure is as follows:

Each stage of the GC has a gearing that is expressed as a ratio n/d (as per Bazley). (In this case the direction of rotation, or "in"/"out" distinction, does not matter).

Let N be the product of all of the n values (one per GC stage), and D be the product of all of the d values (one per GC stage).

The minimum number of main axis rotations would then be N/gcd(N, D) where gcd is the greatest common divisor function.

I don't believe that this would change if you perturbate the shape that the GC follows, so long as the perturbed shape is the same for each main axis rotation (and at the same orientation, or rotational alignment). This assumes that the GC rotations are still tied to the main axis rotations through the n/d gearing.

If, instead, you tie the GC rotations to the length of the path followed, then you could use the same formula if the number of GC rotations is d/n for one complete circumference of the figure. Then it is still d/n for one main axis revolution, like a normal GC.

Let me know whether this works for you!

Hi Bruce

I understand the formulae you gave, but I am still hung up on the shapes of the paths of the centres of each individual stage.

Say there are two stages, is the periodicity of the resultant path only dependant on the gear ratio's no matter what shapes the individual stages follow? Say the gear ratio between the driving spindle and first stage is 2/1 and between the first and second stage is 5/4 so the number of required rotations would be 2 * 5 / GCD(2 *5, 1 * 4) = 10 / GCD(10,4) = 10 / 2 =5

What if both stages follow a sinusoidal path and the frequency of the second is 1/7 of the first does this not affect the resultant path? Would the resultant path be the sum of sin(x) and sin (x/7) which would require 7 rotations not 5

Thats what I cannot get clear in my mind.

Re: number of main axis rotations required for GC

alanb said:
Say there are two stages, is the periodicity of the resultant path only dependant on the gear ratio's no matter what shapes the individual stages follow?
Yes, provided the shapes are the same for each spindle revolution.

alanb said:
What if both stages follow a sinusoidal path and the frequency of the second is 1/7 of the first does this not affect the resultant path?
So long as there are an integral number of sinusoids per revolution, the shapes shouldn't matter. But if the number of sinusoids per revolution is fractional, then we need to modify the formula. In this case, the figure traced in the second revolution would not overlay the figure from the first revolution. I think that you would add the ratio of the sinusoids per rev to the list of GC ratios, but the number of sinusoids per rev would be expressed as d/n, not n/d. If the number of sinusoids per revolution is irrational, the pattern will never repeat (though there may be places where it gets very close).

In thinking more about this, it looks like I got the original formula wrong...

For the remaining discussion, I'll use n1/d1 for the gear ratios of the first stage GC, and n2/d2 for the second stage GC. I'll assume that these ratios are already in their lowest terms.

Basically to get a complete pattern, we need to bring the headstock index and each of the GC indexes back to their respective starting positions.

To get the headstock index back to the starting position, we simply need an integral number of headstock rotations.

The amount that the first stage GC rotates per headstock rotation is d1/n1 (the headstock index is divided by n1/d1 to get the GC index). Thus, we need n1 headstock rotations to get both the headstock and the first stage GC index back to their starting positions. The shape that the GC follows shouldn't matter.

After n1 headstock rotations, the first stage GC will have rotated d1 revolutions. For the second stage GC to get back to its starting point, the first stage has to rotate a multiple of n2. To get both stages back to their starting positions simultaneously, we need some integer I such that I * d1 is a multiple of n2. Thus I is n2/gcd(n2, d1) and the total number of headstock rotations to get back to the starting point is I * n1 or n1 * n2 / gcd(n2, d1).

The following procedure should generalize this to N GC stages:

def num_headstock_rotations(sequence_of_n_d):
    N = 1
    D = 1
    for n, d in sequence_of_n_d:
        divisor = gcd(n, D)
        N *= n / divisor
        D = D / divisor * d
    return N
Thanks Bruce,
Your last posting was very instructive. I think that it was the irrational number of sinusoids was making me irrational also.