LgHS OpenSCAD Module
! Attention cette librairie n'est compatible qu'avec les Nightly Builds de OpenScad ! Librairie pour OpenSCAD apportant :
-
Nouvelles fonctions
-
Nouveaux modificateurs
-
Nouveaux objets 2D
-
Nouveaux objets 3D
-
Nouveaux objets hybrides
Le but est également de rendre accessible toutes les primitives 2D originelles ou de cette librairie accessibles sous forme de fonction et non plus seulement d'objet.
Par exemple :
square([20,10],center=true);
équivaut avec cette librairie à :
polygon(square([20,10],center=true));
Dans le premier cas, nous faisons appel à un objet, dans le second à une fonction.
La différence principale vient de l'utilisation pouvant en être faite puisque l'appel à une fonction permet de lui appliquer des transformations directement sur les vecteurs composant la forme et non uniquement sur la forme en elle-même.
Présentation du projet
Date de début: 01/01/2019
Copyright: Marc Vanlindt © 2019 - marc at vanlindt dot com
Licence: GPL
Fonctions
Random
random(n,s,pos)
Cette fonction a pour but d'être plus simple à utiliser que la fonction présente nativement rands().
Variable | Signification | Type | Utilité |
---|---|---|---|
n | Nombre | Nombre | L'aléa ira de 0 à ce nombre. |
s | Seed | Nombre | Graine à utiliser pour créer l'aléa |
pos | Positif ? | Booléen | Si true ou non indiqué, l'aléa ira de 0 au nombre choisi. Si false, ira de -n à n |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(random(10,5)) | 6.833 | Nombre |
Code de la fonction
function random(n,s,pos) = rands(pos==undef?0:pos==true?0:-n,n,1,s==undef?n:s)[0];
Fibonacci
fibonacci(n)
Cette fonction a pour but de donner la valeur voulue de la suie de Fibonacci.
Variable | Signification | Type | Utilité |
---|---|---|---|
n | Nombre | Nombre | Indique la valeur de la nème valeur de la suite de Fibonnaci |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
for(i=[1:15]){ echo(fibonacci(i)); } |
ECHO: 1 ECHO: 2 ECHO: 3 ECHO: 5 ECHO: 8 ECHO: 13 ECHO: 21 ECHO: 34 ECHO: 55 ECHO: 89 ECHO: 144 ECHO: 233 ECHO: 377 ECHO: 610 ECHO: 987 |
Nombre |
Code de la fonction
function fibonacci(n,a=0,b=1,c=1) = c<n?fibonacci(a=b,b=a+b,c=c+1,n=n):a+b;
Hypo
hypo(a,b)
Fournit l'hypoténuse sur base de deux longueurs.
Variable | Signification | Type | Utilité |
---|---|---|---|
a & b | Nombre | Nombre | Indique les longueurs des deux côtés d'un triangle qui ne sont pas l'hypoténuse |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(hypo(3,4)); | ECHO: 5 | Nombre |
Code de la fonction
function hypo(a,b) = sqrt((a*a)+(b*b));
Pair
pair(a)
Cette fonction indique si le nombre donné est pair ou impair.
Variable | Signification | Type | Utilité |
---|---|---|---|
a & b | Nombre | Nombre | Indique les longueurs des deux côtés d'un triangle qui ne sont pas l'hypoténuse |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(pair(3)); echo(pair(4)); |
ECHO: false ECHO: true |
Booléen |
Code de la fonction
function pair(a) = a%2==0?true:false;
Sum
sum(a)
Cette fonction fournit la somme des valeurs contenues dans a.
Variable | Signification | Type | Utilité |
---|---|---|---|
a | Table | Table | Indique les valeurs devant être additionnées |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(sum([1,2,3,4])); | ECHO: 10 | Nombre |
Code de la fonction
function sum(a,b=0,c=0) = b<len(a)?sum(a=a,b=b+1,c=c+a[b]):c;
ToPct
topct(a)
Cette fonction transforme les valeurs d'une table en le pourcentage qu'elles représentent dans cette table.
Variable | Signification | Type | Utilité |
---|---|---|---|
a | Table | Table | Indique les valeurs devant être traitées |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(topct([1,2,3])); | ECHO: [0.1666667, 0.333333, 0.5] | Table |
Code de la fonction
function topct(a) = a/sum(a);
Middle
middle(a)
Cette fonction donne la moyenne des valeurs contenues dans une table.
Variable | Signification | Type | Utilité |
---|---|---|---|
a | Table | Table | Indique les valeurs devant être traitées |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(middle([1,2,3])); | ECHO: 2 | Nombre |
Code de la fonction
function middle(a,b=0,c=0) = b<len(a)?sum(a=a,b=b+1,c=c+a[b])/len(a):c;
Invert
invert(a)
Cette fonction inverse une table.
Variable | Signification | Type | Utilité |
---|---|---|---|
a | Table | Table | Indique les valeurs devant être inversées |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(invert([1,2,3])); | ECHO: [3,2,1] | Table |
Code de la fonction
function invert(a) = let(b=[for(i=[0:len(a)-1]) a[(len(a)-1)-i]])b;
Sort
sort(a,invert)
Cette fonction trie une table.
Variable | Signification | Type | Utilité |
---|---|---|---|
a | Table | Table | Indique les valeurs devant être triées |
invert | Inversion | Booléen | Inverse le sens du tri |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(sort([4,2,1,3])); echo(sort([4,2,1,3],invert=true)); |
ECHO: [1,2,3,4] ECHO: [4,3,2,1] |
Table |
Code de la fonction
function sort (a,invert=false) = len(a) == 0 ? [] : let ( b=floor(len(a)/2), c=[for(i=a) if (i<a[b]) i], d=[for(i=a) if (i>a[b]) i], e=[for(i=a) if (i==a[b]) i] ) invert==false?concat(sort(c),e,sort(d)):invert(concat(sort(c),e,sort(d)));
HypoVEC
hypovec(a,b)
Cette fonction donne l'hypoténuse sur base de deux coordonées.
Variable | Signification | Type | Utilité |
---|---|---|---|
a & b | Table | Table | Indique les coordonées |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(hypovec([0,0],[10,10])); | ECHO: 14.14214 | Nombre |
Code de la fonction
function hypovec(a,b) = sqrt(((b[0]-a[0])*(b[0]-a[0]))+((b[1]-a[1])*(b[1]-a[1])));
Divide
divide(a,b,c)
Cette fonction divise un vecteur basé sur deux coordonnées et un diviseur.
Variable | Signification | Type | Utilité |
---|---|---|---|
a & b | Table | Table | Indique les coordonées |
c | Nombre | Diviseur |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(divide([0,0],[10,10],1/3)); | ECHO: [3.33333,3.33333] | Table |
Code de la fonction
function divide(a,b,c) = [a[0]+(b[0]-a[0])*c, a[1]+(b[1]-a[1])*c];
MyAngle
myangle(a,b)
Cette fonction fournit l'angle existant entre deux coordonnées.
Variable | Signification | Type | Utilité |
---|---|---|---|
a & b | Table | Table | Indique les coordonnées |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(myangle([0,0],[10,10])); | ECHO: 45 | Nombre |
Code de la fonction
function myangle(a,b) = 90-atan2(b[0]-a[0],b[1]-a[1])*-1;
Join & Join2
join(a)
Dans une table composée d'autres tables : réunit tout en une seule table.
Join2 est beaucoup plus rapide mais ne fonctionne qu'avec les Nightly Builds de OpenSCAD.
Variable | Signification | Type | Utilité |
---|---|---|---|
a | Table | Table | Table devant voir ses données jointes |
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(join([[[0,0],[10,10],[20,20]],[[30,30],[40,40],[50,50]],[[60,60],[70,70],[80,80]]])); |
ECHO: [[0, 0], [10, 10], [20, 20], [30, 30], [40, 40], [50, 50], [60, 60], [70, 70], [80, 80]] |
Table |
Code de la fonction
function join(a,c=0,t=[]) = let (u=concat(t,a[c]))c==len(a)?t:join(a=a,c=c+1,t=u);
function join2(a) = [for(i=[0:len(a)-1] ) each a[i]];
Clean
clean(a)
Nettoie une table des doublons et valeurs indéfinies
Exemple
Usage | Sortie | Type de sortie |
---|---|---|
echo(clean([undef,[0,0],[10,10],[10,10],undef,[20,20]])); |
ECHO: [[0, 0], [10, 10], [20, 20]] |
Table |
Code de la fonction
function clean(a) = [for(i=[0:len(a)-1]) each (a[i]==a[i+1]?"":a[i][0]==undef?"":[a[i]])];
Pas de commentaires