90% problemów w Grasshopperze wynika z niewłaściwej manipulacji strukturami danych. Co tydzień otrzymuję wiele pytań dotyczących tego tematu. Większość z tych problemów możnany łatwo rozwiązać za pomocą jednego komponentu. Wiem, że spośród 26 komponentów nie jest łatwo wybrać ten właściwy. Jednak w tej serii przedstawię kilka z nich, które ułatwią Tobie pracę z ,,strukturą drzew”. Ale najpierw zacznijmy od masek w Grasshopperze, które mogą być naprawdę pomocne.
Wskazówki jak używać masek w Grasshopperze.
1. Drzewo jako struktura danych
Przyjrzyjmy się strukturom drzew w Grasshoperze. Wszystkie składają się z gałęzi i elementów. Elementy, można również nazywać liśćmi lub przedmiotami, ale trzymajmy się jednej terminologii.
Poniższy przykład zawiera 3 gałęzie i różną liczbę elementów w nich. W pierwszej gałęzi mamy 4 elementy, w drugiej 3, a w ostatniej można znaleźć 2. Maska pomaga w wybraniu odpowiednich gałęzi i elementów struktury drzewa. Zawiera ona informacje o numerze konkretnej gałęzi i pozycji elementu, który chcesz wybrać.
Na samym dole tego posta możesz znaleźć zasady tworzenia masek. Zachęcam do wydrukowania tej listy, powieszenia jej nad biurkiem i używania jako ściągawki. Poniższe reguły będą działać z komponentami [Path Compare], [Split Tree] i [Replace Paths].
Teraz na podstawie tej listy pokaże jak tworzyć maski. Najlepszym narzędziem do ilustracji będzie komponent [Split Tree] .
[Split Tree] to potężne narzędzie w Grasshopperze. Daje ono możliwość zaznaczenia części struktury drzewa lub podzielenia jej na dwie części. W tym celu musimy użyć maski skonstruowanej ze specialnych znaków. W powyższym przykładzie chciałbym wybrać drugą gałąź i drugą pozycję w tej gałęzi. Wynik tej operacji powinien zwrócić wartość 6. Spójrzmy na ,,Positive output”. Na panelu widzimy,tylko jedną pozycję, a reszta nie jest wypełniona. Elementy, które nie spełnią kryteriów, pozostaną w wyniku zwanym ,,Negative output”
Maska wybierająca tylko jeden element
Teraz pokażę wam funkcjonalność komonentu na siatce kul. Struktura danych w tym przypadku będzie dwuwymiarowa, co oznacza, że drzewo składa się z jednego poziomu gałęzi wraz z elementami. Jeśli chcielibyśmy wybrać tylko jeden element, możemy wpisać w nawiasach klamrowych numer gałęzi. Pamiętaj, że każda gałąź musi być oddzielona średnikiem.
Po określeniu gałęzi możemy przejść do elementu. Aby określić pozycje, należy użyć nawiasów kwadratowych. Należy pamiętać, że elementy są ostatnimi pozycjami w drzewie i nie można tworzyć kolejnych poziomów elementów. Jeśli chcielibyśmy rozszerzyć nasze drzewo, musimy dodać tylko więcej gałęzi np. poprzez {Graft Tree]
Maski w Grasshoperze dla większej liczby elementów
Ok, ale jak wybrać więcej niż jeden element? Wyjaśnię to na trójwymiarowym drzewie. Podstawa tego drzewa pochodzi z poprzedniej siatki i została skopiowana liniowo w górę. W ten sposób otrzymaliśmy drugą gałąź.
Gwiazdka (*) umożliwia wybranie dowolnej liczby liczb całkowitych w ścieżce. Na przykład, jeśli chcielibyśmy wybrać wszystkie kule z pierwszego poziomu naszego drzewa, musimy wpisać na ścieżce naszą stałą wartość, która wynosi 0, a następnie wstawić gwiazdkę w miejscu drugiej gałęzi. Teoretycznie musimy wstawić gwiazdkę do maski elementu (w nawiasach kwadratowych), ale w rzeczywistości, jeśli pominiemy tę część, program wybierze je wszystkie automatycznie.
Możesz także umieścić tylko jedną gwiazdkę w nawiasach klamrowych, bez średników. Bez względu na to, jak wygląda drzewo, taki zabieg umożliwia uwzględnienie wszystkich gałęzi.
Więcej opcji...
Ok, mamy nawiasy klamrowe do gałęzie, kwadratowe do elementów, a po co są zwykłe nawiasy ?
Zwykłe nawiasy służą do organizowania i grupowania, używane głównie z logicznymi operatorami (and/or).
Istnieje kilka sposobów opisywania liczb całkowitych w nawiasach. Na przykład wstawienie przecinka po każdej liczbie całkowitej spowoduje wybranie tylko tych liczb. Wstawianie między liczbami przyrostka ,,to” spowoduje wybranie dowolnej liczby całkowitej z tego zakresu. Warto wiedzieć, że zostanie uwzględniona także pierwsza i ostatnia liczba całkowita z tego zakresu.
Co więcej, jeśli na końcu zostaną wstawione 3 kropki, zostanie wybrana dowolna liczba całkowita w wymienionej sekwencji. Sekwencje muszą mieć co najmniej dwie liczby całkowite i kończyć się 3 kropkami po przecinku. Natomiast jeśli umieścisz 3 kropki w środku, określisz dowolną liczbę całkowitą, która jest częścią tego skończonego ciągu.
Dzięki zwykłym nawiasom możliwe jest również łączenie dwóch lub więcej reguł przy użyciu operatorów logicznych
Teraz...
... zalety używania [Split tree] w Grasshoperze
Jedną z największych zalet tego narzędzia jest fakt, że oryginalne drzewo jest zachowane. Elementy nie spełniające kryteriów zastępowane są pustymi miejscami. Dlatego też możemy podzielić swoje drzewo, dokonać pewnych modyfikacji w podzielonej części, a następnie połączyć razem bez utraty oryginalnej struktury danych.
i ...
... wyzwania związane z używaniem masek
Musimy pamiętać, że stworzona maska będzie działać tylko dla określonej liczby gałęzi. Przy każdej zmianie struktury drzewa danych musimy odpowiednio dopasować maskę.
Jakich trików używasz w Grasshopperze, do pracy ze skomplikowanymi strukturami drzew?
Write in the comments below.
Których komponentów używasz do manipulacji drzew?
Napisz do nas na [email protected]
Zawsze odpowiadamy !!
Sprawdź pozostałe artykuły z serii Triki i porady w Grasshopperze:
Aby uzyskać więcej informacji na temat manipulacji strukturami drzew, pobierz bezpłatnie książkę: Essential Algorithms and Data Structures – POBIERZ