Paso 6: Construir el esqueleto.
El esqueleto se basa en el eje intermedio. He utilizado una calculadora de diagrama de Voronoi existente. Originalmente fue escrito por Steven Fortune en el laboratorio de Bell y traducido a Python por Bill Simons. El diagrama de Voronoi es la base para la creación de la estructura del eje intermedio.
Se incluye el archivo de python (triangulate.py) y referencia a los creadores en la op superior la secuencia de comandos. Puede ser utilizado en NodeBox después de agregar una función que será llamada para por un nodo. El eje intermedio se basa en el diagrama de Voronoi de un conjunto de puntos en ese sentido que todos los puntos dentro de la forma (en el cual se calculó el diagrama) se mantienen. No son todas las que la forma exterior.
He añadido un ejemplo sobre una hoja verde del arce que muestra los diferentes resultados de Voronoi y eje intermedio basado en una forma (original).
Su una buena práctica pensar de antemano en los argumentos que se pueden enviar a una función de 'fuera'. En este caso puedo enviar la forma (el ciempiés completa) y una lista de puntos de esa forma (de un volver a muestrear nodos f.i).
Abajo se encuentra la función que escribí para pedir en NodeBox. Esta función es el último en la secuencia de comandos triangulate.py.
DEF medianAxis(shape,points): volver a todos los
de la importación de nodebox.graphics punto de
SL = SiteList(points)
c = Context()
Voronoi(SL, c)
todos =]
para l, v1, v2 en c.edges:
Si v1 == -1 o v2 == -1: continuar
x1, y1 = c.vertices[v1]
x2, y2 = c.vertices[v2]
P1 = Point(x1,y1)
P2 = Point(x2,y2)
Si no shape.contains(x1,y1): continuar
Si no shape.contains(x2,y2): continuar
PSUB = [Point(p1.x,p1.y),Point(p2.x,p2.y)]
porque yo, el punto en enumerate(psub):
ALL.Append(Point)
Lo que sale es una lista que puede ser conectada como pares (1 -2, 3 -4, 5-6,...) Hasta ahora para la parte de codificación.
Utilizando la función en NodeBox.
Ahora que tengo una función para pedir, puede ser implementado en NodeBox. Primero tenemos que importar el archivo de python en el programa.
* Ir a archivo >> bibliotecas de código. Se abrirá una nueva ventana pequeña con en la parte superior derecha de la esquina un signo '+'.
* Presione '+' y seleccione el Python Python cierre opción. Vaya a triangulate.py.
* Si puede ver una referencia a él puede cerrar la ventana.
Ahora es importar el archivo de python y las funciones en se pueden llamar desde un nodo.
Funciones y NB3, cómo funciona.
Cada nodo requiere una función, usted puede averiguar que uno Seleccione un nodo y luego ir a la ficha de metadatos sobre la ventana de parámetros del puerto. Abrirá una nueva ventana con las especificaciones del nodo y sus puertos. Si vas a 'Opciones' puede averiguar lo que la función se refiere a. En el caso de un rectángulo que dirá: corevector/rect, lo que significa que llamará la función rect en el archivo corevector. Para llamar a la función medianAxis en triangulate.py tengo que llamar triangular/medianAxis.
Necesito un nodo donde puedo enviar una forma y una lista de puntos y que devuelve una lista (de nuevo). Podemos utilizar para comenzar con el nodo de centro ya que las importaciones de una forma y calcula el punto centroide. Ya estamos a mitad de camino hay...
* Crear un nodo de centroide y cambió el nombre a eje de la mediana.
* Seleccione el nodo y vaya a la ficha de metadatos.
* Ir al nodo >> ajustes. Escriba ' triangular/medianAxis' en la opción de 'Función'.
* En la misma ventana cambiar salida rango de valor a la lista mediante el menú.
* También podría cambiar la imagen del nodo. Su icono para el nodo en la red.
Todavía necesitamos un nuevo puerto. Por el momento el nodo sólo puede recibir una forma.
* En la ventana de metadatos: haga clic en el botón '+' en la esquina inferior izquierda.
* Introduzca un nombre de puerto: lo llaman 'puntos'.
* Seleccione 'punto' en el menú tipo y pulse 'Aceptar'.
Todavía estamos en la ventana de metadatos. Usted debe ser capaz de ver el puerto puntos además del puerto de forma.
* Seleccione en el lado izquierdo de la pantalla. (se vuelve oscuro)
* Cambiar 'Rango' en el lado derecho del valor a la lista.
* Pulse la tecla OK.
Usando el nuevo nodo.
El nodo intermedio eje necesita dos entradas como se describió anteriormente. Ya tenemos la forma (el que está en align1), tenemos que extraer una lista de puntos.
* Crear un nodo de volver a muestrear. Conectar el align1 a la forma. Definir método de a de longitud y longitud a 20.0.
* Crear un nodo de punto. Conectar el resample2 a él. Esta es la lista de puntos.
Ahora hacemos las conexiones al nodo eje intermedio.
* Conecte el align1 a la forma.
* Conexión resample2 a puntos.
* Procesar el nodo eje intermedio.
Lo que sale es una lista de puntos que se puede conectar como pares. La idea es que se cuenta el número de puntos para saber cuántos pares se pueden hacer. Los pares se conectará a cada uno sobre una subred pequeña.
* Crear un nodo de la cuenta. * Seleccionar slice1 y connect1 y crear una subred de la misma.
* Crear un nodo de la gama. Enviar el nodo anterior de la cuenta al final y paso a 2.
* Crear un nodo de la rebanada. Conecte el eje intermedio a la lista y range7 a Startindex.
* Crear un nodo de conexión. Conectarse a slice1 puntos. Hacen.
* Lo llaman 'Borde Medial del eje'.
* Hacerla.
Es una captura de pantalla de la red en la parte superior de este paso.