Leonardo Da Vinci's Vite Aerea
"Trovo, se questo strumento a vite sarà ben fatto, cioè fatto di tela lina, stopata i suoi pori con amido, e svoltata con prestezza, che detta vite si fa la femmina nell’aria e monterà in alto" (Leonardo Da Vinci)
The Aerial Screw was designed by Leonardo Da Vinci between 1483 and 1486, in Milan. Like many of the ideas of the Italian artist and scientist, even the screw was a simple project ever realized in practice. Indeed, Leonardo create a sketch of the project, conceiving the various parts. The aerial screw demonstrates, once again, as Leonardo was a precursor of modern technologies, in fact, on the same mechanism, will be based the helicopter of Enrico Forlanini, invented four hundred years later.
Leonardo Da Vinci also specified what could be the most suitable materials for the construction of the aircraft: reeds, wood, cloth and wire. In addition, as specified placed in the quote at the beginning of this page, the canvas should have been coated with starch to make it even more impermeable to air, in order to oppose more resistance. The platform of wood have a diameter of 5 meters.
Four men, placed on the central platform,must turn the mechanism connected to the mast, which also rotates the sail. Scientists believe that the air screw can not fly for a lack of a force that can lift it, but recent studies have found that Leonardo had devised a way to release a force greater than that of the four men. This way is based around the mysterious box placed on the center platform.
The latest studies on the sketches of Leonardo showed the presence of a box placed on the center platform. This box could hold a spring that was charged by the movement of the four men. Once released, the spring could be able, theoretically, to generate a force capable of lifting, albeit slightly, the air screw. In most physical models this box has not been inserted.
The decomposition of the 3D model of the project can be divided into six components: the sail, the beams, the base, the mast, the spars and the tie rods. The sail is definitely the most complex part of the project and has required a special study of its function and form. In this model the box is clearly showed.
For the sail was originally studied the Archimedean spiral and the formulas that dictate its shape, then was used a mapping function associated with a bidimensional domain specially designed. This domain goes from 0 to the angle of interest (given by the turns that you want to impress on the sail) and the minimum and maximum radius of the same that dictate the size.
var turns = 1.5;
var angle = turns * 2 * PI;
var radius_max = 16;
var radius_min = 1;
var height = 15;
var domain2 = DOMAIN([[0, angle], [radius_min, radius_max]])([120, 4])
var mapping = function (p) {
var a = p[0];
var r = p[1] * (1 + a / angle);
var h = height - (a / angle * height);
return [r * -COS(a), r * SIN(a), h];
};
var sail = MAP(mapping)(domain2);
For the particular form of the beams was used the BEZIER_CURVES. Four curves enclose 2 surfaces and creates the singular beam.
var domain = INTERVALS(1)(50);
var domain2 = DOMAIN([[0,1],[0,1]])([30,50])
var domain3 = DOMAIN([[0,1],[0,1],[0,1]])([30,50])
var sezMcp1 = [[0,0,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],
[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[0.5,0,0]]
var sezMc1 = BEZIER(S0)(sezMcp1);
var sezMcp2 = [[0,0,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],
[6,7,0.5],[6,7,0.5],[6,7,0.5],
[6,6.5,0.5],[6,6.5,0.5],[6,6.5,0.5],[6,6.5,0.5],[6,6.5,0.5],[6,6.5,0.5],[0.5,0,0.5]]
var sezMc2 = BEZIER(S0)(sezMcp2);
//Surface 1
var sur = BEZIER(S1)([sezMc1,sezMc2])
var rSur = MAP(sur)(domain2)
var bordP1 = [[0,0,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],[6,7,0],
[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[6,7,0.5],[0,0,0.5]]
var bordC1 = BEZIER(S0)(bordP1);
var bordP2 = [[0.5,0,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],[6,6.5,0],
[6,6.5,0.5],[6,6.5,0.5],[6,6.5,0.5],
[6,6.5,0.5],[6,6.5,0.5],[6,6.5,0.5],[6,6.5,0.5],[6,6.5,0.5],[0.5,0,0.5]]
var bordC2 = BEZIER(S0)(bordP2);
//Surface 2
var sur2 = BEZIER(S1)([bordC1,bordC2])
var rSur2 = MAP(sur2)(domain2)
A rotational transformation, with a scale function creates the 4 beams.
var support = STRUCT([rSur,rSur2])
var supportPos = T([0,1,2])([-19,0.2,0.5])(S([0,2])([3,3])(R([1,2])([PI/2])(support)))
var supportStruct = STRUCT([supportPos, rotSpars, supportPos, rotSpars, supportPos, rotSpars, supportPos])
For the base was used the CYL_SURFACE function for the two bases with the DISK function. But a bug in the alpha of plasm.js has forced the use of another way to close the cylindric surfaces. So was used a domain with a mapping function that creates a disk.
var b = CYL_SURFACE([16,1])([100,1])
var angle = 2 * PI;
var radius = 16;
var domain3 = DOMAIN([[0, angle], [0, radius]])([120, 4])
var mapping3 = function (p) {
var a = p[0];
var r = p[1];
return [r * COS(a), r * SIN(a),0];
};
var d = MAP(mapping3)(domain3);
var dPos = T([2])([1])(d)
var base1 = STRUCT([b,dPos])
The mast was divided in the mast itself and the tip. The mast was created with a simply CYL_SURFACE, the tip instead has required the creation of a domain that, with a mapping functions, creates the particular pointed form.
var angle = 2 * PI;
var radius = 0.5;
var altezza = 2;
var domain3 = DOMAIN([[0, angle], [0, radius], [0, altezza]])([30, 4, 4]);
var mapping3 = function (p) {
var a = p[0];
var r = p[1];
var z = p[2];
return [z * r * COS(a), z * r * SIN(a), altezza - z];
};
var tip = MAP(mapping3)(domain3);
var posTip = T([2])([38])(tip)
var mast = STRUCT([posMast, posTip])
For one spar was used the same technique of the mast and the base: a CYL_SURFACE and a mapped domain to close the surface and a rotational function to generate all the four spars.
The two spars on the sail was generated with a SCALE function starting from one of the base spar.
The box was generated with a CUBOID function
For the tie rods was used several POLYLINE functions
var tir1 = POLYLINE([[8.8,18,0],[11,13,33.4]])
var tir2 = POLYLINE([[17.9,8,0],[19,7,32.5]])
var tir3 = POLYLINE([[-12,16,0],[-11,13,35.6]])
var tir4 = POLYLINE([[-17.8,8,0],[-21,3,26.5]])
var tir5 = POLYLINE([[-8.8,-18,0],[-11,-13,28.3]])
var tir6 = POLYLINE([[-17.9,-8,0],[-22,-10,27.7]])
var tir7 = POLYLINE([[8.8,-18,0],[11,-13,30.6]])
var tir8 = POLYLINE([[17.9,-8,0],[20,-5,31.6]])
var tirs = STRUCT([tir1,tir2,tir3,tir4,tir5,tir6,tir7,tir8])
The animation is constituted by a "Fly()" function which actives a javascript "confirm" message to the user. In case of an affirmative answer, a "setInterval()" function is activated and calls a rotational funtion applied to the elements of the model that have to rotate.
function Fly() {
var message = 'Do you want to activate the movement of the Vite Aerea?'
var choice = confirm(message)
if (choice == true) {
setInterval(function () {
vite.rotate([0,1], PI/45);
}, 60);
}
}
Thanks to Enrico Marino for the support. And thanks to Annalisa Ghelardini for her feminine touch. Without her, this model, much probably, would have the wrong colors.