Étape 6: Construire le squelette.
Le squelette est basé sur l’axe médian. J’ai utilisé un calculateur de diagramme de Voronoi existant. Il a été initialement écrit par Steven Fortune au laboratoire de Bell et traduit en Python par Bill Simons. Le diagramme de Voronoï est la base pour la création de la structure de l’axe médian.
Le fichier python (triangulate.py) est inclus et aux créateurs sont à l’op haut de la page le script. Il peut être utilisé en NodeBox après l’ajout d’une fonction qui sera appelée pour par un nœud. L’axe médian est basé sur le diagramme de Voronoï d’un ensemble de points dans ce sens que tous les points dans la forme (sur lequel le diagramme a été calculé) sont conservés. Tous ceux en dehors de la forme ne sont pas.
J’ai ajouté un exemple sur une feuille d’érable verte qui montre les différents résultats de Voronoi et axe médian basée sur une forme (original).
Son une bonne pratique de penser à l’avance les arguments qui peuvent être envoyer à une fonction « extérieure ». Dans ce cas, je peux envoyer la forme (le mille-pattes complet) et une liste des points de cette forme (d’un f de nœud resample.i).
Voici la fonction que j’ai écrit pour appeler NodeBox. Cette fonction est le dernier dans le script triangulate.py.
def medianAxis(shape,points) : renvoyer l’ensemble
nodebox.graphics importons Point
SL = SiteList(points)
c = Context()
Voronoi(SL, c)
tous =]
pour l, v1, v2 en c.edges :
Si v1 == -1 ou v2 == -1 : continuer
x1, y1 = c.vertices[v1]
x2, y2 = c.vertices[v2]
P1 = Point(x1,y1)
P2 = Point(x2,y2)
Si pas shape.contains(x1,y1) : continuer
Si pas shape.contains(x2,y2) : continuer
PSUB = [Point(p1.x,p1.y),Point(p2.x,p2.y)]
car moi, au point de enumerate(psub) :
All.Append(point)
Ce qui sort est un points de liste qui peut être connecté en tant que paires (1 -2, 3 -4, 5-6,...) Jusqu’ici pour la partie codante.
Utiliser la fonction de NodeBox.
Maintenant que j’ai une fonction à appeler, elle peut être implémentée dans NodeBox. Tout d’abord, il faut importer le fichier python dans le programme.
* Allez dans fichier >> bibliothèques de Code. Il ouvrira une nouvelle petite fenêtre avec dans le coin supérieur droite coin un signe « + ».
* Appuyez sur « + » et sélectionnez Python Python / option de fermeture. Naviguez jusqu'à triangulate.py.
* Si vous pouvez voir une référence à celui-ci, vous pouvez fermer la fenêtre.
Le fichier python est maintenant importé et les fonctions qu’il peuvent être appelées pour partir d’un nœud.
Fonctions et NB3, comment ça marche.
Chaque nœud réclame une fonction, vous pouvez savoir que l'on en sélectionnant un nœud et ensuite allez dans l’onglet métadonnées sur le dessus de la fenêtre de paramètres/port. Il va ouvrir une nouvelle fenêtre avec les spécifications du nœud et de ses ports. Si vous allez dans « Paramètres », vous pouvez savoir quelle fonction il veut dire. Dans le cas d’un rectangle, il dira : corevector/rect, ce qui signifie qu’il appellera la fonction rect dans le fichier corevector. Pour appeler la fonction medianAxis dans triangulate.py, je vais devoir appeler trianguler/medianAxis.
J’ai besoin d’un nœud où je peux envoyer une forme et une liste de points et qui retourne une liste (des points encore une fois). Nous pouvons utiliser le nœud centroïde commencer avec puisqu’elle importe une forme et calcule le point de centre de gravité. Nous sommes déjà à mi-chemin là...
Créer d’un nœud centroïde et le renomma axe médian.
* Sélectionnez le nœud et allez dans l’onglet métadonnées.
* Accédez au nœud >> Settings. Entrez "trianguler/medianAxis" dans l’option « Fonction ».
* Dans la même fenêtre changer « Plage de sortie » de valeur à la liste en utilisant le menu.
* Vous pouvez également modifier l’image du nœud. Son l’icône pour le nœud dans le réseau.
Nous avons encore besoin d’un nouveau port. Pour l’instant, le nœud ne peut recevoir une forme.
* Dans la fenêtre de métadonnées : cliquez sur le bouton « + » sur le coin inférieur gauche.
* Entrez un nom de port : appelez-le « points ».
* Sélectionnez « pointer » dans le menu Type, puis appuyez sur « OK ».
Nous sommes toujours dans la fenêtre de métadonnées. Vous devriez être en mesure de voir le port de points en complément du port de la forme.
* Sélectionner sur le côté gauche de l’écran. (il s’assombrit)
* Changer « Range » sur le côté droit de la valeur à la liste.
* Appuyez sur OK.
En utilisant le nouveau nœud.
Le nœud de l’axe médian nécessite deux entrées telles que décrites ci-dessus. Nous avons déjà la forme (celui d’align1), il faut extraire une liste de points.
* Créer un nœud de rééchantillonnage. Relier align1 à forme. Méthode de la valeur « en longueur » et la longueur à 20,0.
* Créer un point de nœud. Connecter resample2. Voici la liste des points.
Maintenant, nous faisons les connexions vers le nœud de l’axe médian.
* Relier align1 à forme.
* Branchez resample2 aux Points.
* Rendre le nœud de l’axe médian.
Ce qui sort est une liste de points qui peuvent être connectés en tant que paires. L’idée est que nous compterons le nombre de points de savoir combien de paires peut être faites. Les paires se seront connectés à chacun sur un sous-réseau minuscule.
* Créer un nœud de comte. * Sélectionnez slice1 et connect1 et créer un sous-réseau de celui-ci.
* Créer un nœud de la gamme. Envoyer le nœud précédent du comte à la fin et la valeur étape 2.
* Créer un nœud de tranche. Branchez l’axe médian à liste et range7 jusqu'à la position Startindex.
* Créer un nœud de connexion. Se connecter slice1 à Points. La rendent.
* L’appellent "Bord d’axe médian".
* La rendent.
Une capture d’écran du réseau est en haut de cette étape.