Lame Curves
Circular Arcs are just ONE Form of the Lame Curves.
I "Invented" these in 1992 - but found out two weeks back, that they had already been invented
Boo Hoo
.
To generate ONE Quadrant - where X and Y are both Positive with respect to the "centre" of the figure ( 0,0 ).
And using a "normalised" Figure - 1 Wide, 1 High.
Pythagorus gives us that any point on a Circular sweep will be given by Y = ( 1^2 - x^2 )^0.5.
Where 1 is the Hypotenuse ( Radius ).
To alter the "normalised" figure to an Oval, the Values of XScale and YScale should be different.
In creasing both Xscale and Yscale by the same amount gives simply a larger figure.
For X = 0 to 1 Step 0.000001
Y = SQRT ( 1 - X^2 ):
XPlot = X*Xscale: YPlot = Y*YScale:
Plot Xplot, YPlot:
Next X
For the Full Circle, we need to "handle" Negative X and Y Values.
So - we get -
For X = 0 to 1 Step 0.000001
Y = SQRT ( ABS ( 1 - X^2 ):
XPlot = X*Xscale: YPlot = Y*YScale:
Plot Xplot, YPlot:
Next X
For X = 0 to 1 Step 0.000001
Y = SQRT ( ABS ( X^2 - 1 ):
XPlot = X*Xscale: YPlot = Y*-YScale:
Plot Xplot, YPlot:
Next X
For X = 0 to 1 Step 0.000001
Y = SQRT ( ( 1 - X^2 ):
XPlot = X*-Xscale: YPlot = Y*-YScale:
Plot Xplot, YPlot:
Next X
For X = 0 to 1 Step 0.000001
Y = SQRT ( ABS ( X^2 - 1 ):
XPlot = X*-Xscale: YPlot = Y*YScale:
Plot Xplot, YPlot:
Next X
Now - What use is that ??
Well - for a CIRCLE - Not a LOT.
However - the critical change is if we place the Circle in "distorted" 3-D Space.
If instead of SQRT ( Square Root ) and ^2 ( Square ) which are true for a Circle - we substitute
The "Power" of 1/N and the "Power" of N.
Then strange things happen to our curved figure.
The "program" for the First Quadrant then becomes -
For X = 0 to 1 Step 0.000001
Y = ( 1 - X^N )^1/N:
XPlot = X*Xscale: YPlot = Y*YScale:
Plot Xplot, YPlot:
Next X
As N is reduced to a little less than 2 - the curves start to "flatten" in each Quadrant, although the Rate of Change of Curvature remains consistent. They also become a little "sharper" at the meeting of Quadrants
As N is increased to a liitle more than 2 - the curves become "sharper"in each Quadrant, although the Rate of change of Curvature remains consistent. They also become "flatter" at the meeting of Quadrants.
The Lame Curves are ALWAYS Transition Curves - with no points of sudden acceleration or sudden develeration of curvature.
At modest values of N - they could be used to lay out Roads or the curves of Railway Track.
How about bigger changes in the value of N -
At exactly N =1 - we get a diamond shape, a square rotated by 45 degrees.
At truly Massive values of N ( up to 10^30 ) - we get an almost Square, with very slightlty curved sides asnd nearly sharp, curved corners.
At truly Miniscule values of N ( down to 1/10^30 ) - we get an almost cross ( or crux ) - except that the middle is slighty fatter than the intersection of two straight lines, it actually comprises a very slightly curving line in each Quadrant, which turns through 90 degrees in an incredibly tight curve, very near to the centre.
A wide range of these Curves can be used for Transition Curves with different "orders" of Curvature, in a number of applications.
For example - to create a range of "Ship Curves" for laying-out a Scale Drawing of a Ship's Hull - the Values of Xscale ( length ) and YScale ( half beam ) can be set to the desired values for the Drawing.
By changing the values of N through a range of values the - both "convex" and "concave" transition curves or useful Ship Curves can be generated.
Okay - this all sounds like fancy theory.
However - I have tried this, and it does work.
I Ran this as a Program, many times in 1992 on the Mainframe Computer at Thames Polytechnic.
With Step Values as small as 1/10^12 and values of 'N' from 10^40 down to 1/10^40 -
in both directions ( massive and miniscule values of 'N' ).
As I have already implied - Values of 'N' ( the "order" of the Curves ) between 10 and 1/10 are more useful than the more extreme examples.
I have also Run this as a Program on my BBC Microcomputer - although the range of values of 'N' and the maximum number of Steps had to be reduced seriously.
In all cases, the Program worked exactly as Predicted, and as Described above.