Stap 6: Bouw van het skelet.
Het skelet is gebaseerd op de mediale as. Ik gebruikte een bestaande Voronoi-diagram calculator. Het was oorspronkelijk geschreven door Steven Fortune bij het Bell laboratorium en vertaald in Python door Bill Simons. Het Voronoi-diagram is de uitvalsbasis voor het maken van de structuur van de mediale as.
Het python-bestand (triangulate.py) is opgenomen en verwijzing naar de makers is op de top op het script. Het kan worden gebruikt in NodeBox na het toevoegen van een functie die zal worden aangeroepen voor door een knooppunt. De mediale as is gebaseerd op het Voronoi-diagram van een set op punten in die zin dat alle punten binnen de vorm (waarop het diagram werd berekend) worden bewaard. Al degenen buiten de shape zijn niet.
Ik toegevoegd een voorbeeld op een groene esdoornblad waaruit blijkt dat de verschillende resultaten voor Voronoi en mediale as op basis van een vorm (origineel).
Zijn een goede gewoonte om na te denken op voorhand over de argumenten die kunnen sturen naar een 'buitenkant' functie. Ik kan in dit geval de vorm (de volledige duizendpoot) en een lijst van punten van die shape (uit een resample knooppunt f.i) sturen.
Hieronder is de functie die ik schreef in NodeBox verlangt. Deze functie is de laatste in het script triangulate.py.
def medianAxis(shape,points): alle
importeren uit nodebox.graphics punt
SL = SiteList(points)
c = Context()
Voronoi(SL, c)
alle =]
voor l, v1, v2 in c.edges:
Als v1 -1 of v2 == == -1: blijven
x1, y1 = c.vertices[v1]
x2, y2 = c.vertices[v2]
P1 = Point(x1,y1)
P2 = Point(x2,y2)
Als niet shape.contains(x1,y1): blijven
Als niet shape.contains(x2,y2): blijven
psub = [Point(p1.x,p1.y),Point(p2.x,p2.y)]
want ik, wijs in enumerate(psub):
all.Append(Point)
Wat er uit is een lijst met punten die kunnen worden aangesloten als paren (1 -2, 3 -4, 5-6,...) Tot nu toe voor de codering deel.
Met behulp van de functie in NodeBox.
Nu dat ik te roepen voor een functie, kan het worden toegepast in NodeBox. We moeten eerst het python-bestand importeren in het programma.
* Ga naar File >> Code bibliotheken. Opent een nieuwe kleine venster met in de bovenste hoek rechts een '+' teken.
* Druk op '+' en selecteer van Python in de Python / sluiting optie. Ga naar triangulate.py.
* Als je een verwijzing ernaar zien kunt kunt u het venster sluit.
Het python-bestand wordt nu geïmporteerd en de functies in het voor kunnen worden aangeroepen vanuit een knooppunt.
Functies en NB3, hoe werkt het.
Elk knooppunt wordt aangedrongen op een functie, kunt u achterhalen welke door het selecteren van een knooppunt en ga naar de metadata tabblad op de top van het venster poort/parameters. Een nieuw venster zal openen met de specificaties van het knooppunt en de bijbehorende poorten. Als je naar verwijst 'Instellingen' kunt u uitzoeken wat het functioneren naar. In het geval van een rechthoek zal zeggen: corevector/rect, wat betekent dat het de functie rect in het corevector bestand bellen zal. Om te bellen naar de medianAxis functie in triangulate.py zal ik moet roepen triangulate/medianAxis.
Ik moet een knooppunt waar ik kan sturen een vorm en een lijst van punten en die resulteert in een lijst (van punten weer). We kunnen gebruiken het zwaartepunt knooppunt om mee te beginnen aangezien het de invoer van een shape en het zwaartepunt punt berekent. We zijn al halverwege er...
* Het maken van een knooppunt centroid en hernoemde het mediaan as.
* Selecteer het knooppunt en ga naar het tabblad Metadata.
* Ga naar knooppunt >> instellingen. Voer ' triangulate/medianAxis' in de 'Functie' optie.
* In hetzelfde venster 'Uitvoerbereik' van waarde aan de lijst met behulp van het menu te wijzigen.
* U kunt ook het beeld van de knooppunt. Zijn het pictogram voor het knooppunt in het netwerk.
Wij moeten nog een nieuwe poort. Het knooppunt voorlopig kunt alleen een shape ontvangen.
* In het Metadata venster: Klik op de '+' knop in de linker benedenhoek.
* Voer de naam van een poort: noem het 'punten'.
* Selecteer 'Wijs' in het menu Type en klik op 'OK'.
We zijn nog steeds in het Metadata venster. U moet zitten kundig voor zien van de poort van de punten naast de poort van de vorm.
* Selecteer het aan de linkerkant van het scherm. (het wordt donker)
* Verander 'Bereik' aan de rechterkant van waarde aan lijst.
* Druk op OK.
Met behulp van het nieuwe knooppunt.
De mediale as knooppunt moet twee ingangen zoals hierboven beschreven. We hebben al de vorm (de ene in align1), moeten we een lijst van punten uittreksel uit het.
* Maak een resample knooppunt. Align1 verbinden met Shape. Methode instellen 'door lengte' en lengte tot 20,0.
* Maak een punt-knooppunt. Verbinden met resample2 het. Hier is de lijst van punten.
Nu maken we de verbindingen naar de mediale as-knooppunt.
* Sluit align1 aan vorm.
* Verbinden met resample2 punten.
* Het mediale as knooppunt te maken.
Wat er uit is een lijst van punten die kunnen worden aangesloten als paren. Het gaat erom dat we het aantal punten om te weten hoeveel paren kunnen worden gemaakt zal tellen. De paren zelf zal worden aangesloten op elk over een kleine subnetwerk.
* Maak een knooppunt van de graaf. * Selecteer slice1 en connect1 en maak van een subnetwerk van het.
* Maak het knooppunt van een bereik. Het vorige knooppunt geplaatst graaf verzenden einde en stap ingesteld op 2.
* Maak een segment knooppunt. Mediale as verbinden met lijst en range7 verbinden Startindex.
* Maak een knooppunt verbinden. Slice1 verbinden met punten. Maken.
* Noem het 'Mediale as Edge'.
* Het renderen.
Een screenshot van het netwerk is aan de bovenkant van deze stap.