« Presentation openscad : Etape 3 » : différence entre les versions

De Wiki du ThiLab
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 34 : Ligne 34 :


[[Fichier:Oscc etape3e.png|200x200px|vignette|centre]]
[[Fichier:Oscc etape3e.png|200x200px|vignette|centre]]
Revenons a la generalisation en 3D de la somme de minkowski qui nous interesse. Nous avons simplement besoin d'un cube et d'un cylindre qui ira balayer le volume du cube.<br />
Telle l'union ou l'intersection, le code va comprendre la mentino de la fonction <code>minkowski()</code> suivi d'accolades contenant les 2 objets utilises pour la somme :


== Resultat de l'etape 3 ==
== Resultat de l'etape 3 ==

Version du 22 août 2014 à 18:20

Retour a la presentation

Etape 3 : la fonction de minkowski

Pour cette etape, nous allons ajouter l'element suivant aux elements deja crees (notez les arretes arrondies) :

Pour pouvoir realiser cet objet, nous allons utiliser la fonction minkowski() de openscad. Cette fonction correspond a une somme de minkowski entre 2 objets.

A quoi correspond une somme de minkowski ? Elle correspond a la trace d'un balayage du premier objet par le second.

Prenons un cas simple en deux dimensions pour illustrer visuellement cette somme. Supposons que le premier objet soit :

et que le second objet soit :

Le second objet va balayer la surface du premier objet :

ce qui va entrainer une surface de balayage pour chaque point, qui misent bout a bout, vont entrainer une surface de balayage globale :

C'est l'union de ces surfaces de balayage qui ca donner l'objet correspondant a la somme de minkowski des 2 objets de depart :

Revenons a la generalisation en 3D de la somme de minkowski qui nous interesse. Nous avons simplement besoin d'un cube et d'un cylindre qui ira balayer le volume du cube.

Telle l'union ou l'intersection, le code va comprendre la mentino de la fonction minkowski() suivi d'accolades contenant les 2 objets utilises pour la somme :

Resultat de l'etape 3

Le code apres l'etape 3 est donc le suivant :

$fn=60;

union()
{
		intersection()
		{
			translate([-10,-10,-10]) cube([20,20,20]);
			sphere(r=12);
		}

		cylinder(r=7.5, h=20);

		minkowski()
		{
			translate([-10,-10,-25]) cube([20,20,20]);
			cylinder(r=2,h=1);
		}
}

Ce qui nous donne cet objet :

Retour a la presentation