Creating Scale Translation Surfaces (Trans-scale surface)


I’m stuck trying to generate a specific mathematical surface. It is sometimes called a ‘Scale Translation’ Surface and other times ‘Trans-Scale’ Surface. Essentially, it is a series of section curves of varying scales translated along a rail.

The primary advantage of this surface is when you facet it, it will always create planar quadrilaterals.

Scale Translation Surface Example

I have tried Sweep2 (and variations of it) and Loft, but they always result in NURB curves when I cut with a plane offset from the section curves.

Thanks for your help!

SkewedBarrelCurves.3dm (25.1 KB)

Hi @Tim_Williams, you might do it as shown in the file below.

I´ve created two section circles and one first rail as in your image. To get a second rail (green in my file), i’ve used Sweep1 and extracted the seam curve from the resulting surface. The surface was then deleted. Afterwards i´ve used the _Section command to get points on both rails in a side view at equal elevation heights. These points where used to snap two point circles which are all parallel to the initial circles. Once, done i’ve lofted all circles, using the “Normal” option of the _Loft command. The result is a surface from which you can extract isocurves in V-Direction which are 100% circular.

To check if this can be meshed with planar quads, i´ve created a quad mesh and started the command _TriangulateNonPlanarQuads. They are with a distance smaller than 0.00001 or an angle smaller 0.001. I guess the more circles are used, the smaller the planar measurement will go, but have not tried that :slight_smile:

Tim.3dm (195.0 KB)


1 Like

btw. this works also without a second rail, just use the axis line for sectioning instead…


Wow, you’re right. I thought I already tried this, but must have done something different.

Thanks for your help!

i assumed that the circle centers have to lie on the axis (edit: looks like i assumed wrong :slight_smile:) . The surface is loft using the circles, Divide command to locate centers for the circles (from the rail curve or a vertical). CrvDeviation shows very small deviation from a circle at a random location -

1 Like

Nice raja. Actually, your solution is what I was looking for, but the principle is the same.

Is deviation unavoidable with the Loft function?

From a practical point of view, my thinking is that 3-4 millionths of whatever unit you’re using isn’t really a deviation in any sense but the absolutely theoretical. “Deviations” of this magnitude can come about just from the natural computational (in)accuracy of digital computers.

Very true, but my project is very large. Hundreds of meters.

On this subject, is Rhino as accurate as other modeling programs (CATIA, Autocad, etc.)?

Yes, but in the real, physical world, you can’t hold micron tolerances on hundred-meter long projects… which is what you’re asking.

Rhino is capable of being as accurate or even more accurate than any program out there - it’s all in the hands of the user.


1 Like

The size of your model is insignificant if you use the method i´ve shown above. Your axis line is 112 meters, if you _Countour the Rail and Axis line with a 1 meter distance, you´ll get enough circles to build a lofted surface which has 100% circular sections. Below is the resulting surface built from circles with 0.5m distance (219 circles).

Loft.3dm (172.8 KB)

btw. in your file, you might check the tolerances. An angle tolerance of 0 degree is not really tolerant :slight_smile:


1 Like

Thanks again. You’ve eased my nervousness. The model I uploaded was just a quick extract. The actual will be >500m.