# Matematyka

Jeśli najprostszą formą danych są liczby, najprostszym sposobem powiązywania tych liczb jest matematyka. Od prostych operatorów, takich jak dzielenie czy funkcje trygonometryczne, po bardziej złożone formuły — matematyka stanowi doskonały sposób na rozpoczęcie badania zależności i wzorców między liczbami.

### Operatory arytmetyczne

Operatory to zestaw komponentów, w których używane są funkcje algebraiczne z dwiema wejściowymi wartościami liczbowymi dającymi jedną wartość wyjściową (dodawanie, odejmowanie, mnożenie, dzielenie itp.). Można je znaleźć w obszarze Operatory > Operacje.

| Ikona | Nazwa (składnia)      | Dane wejściowe             | Dane wyjściowe |
| ----- | --------------------- | -------------------------- | -------------- |
| !     | Dodawanie (**+**)     | var\[]...\[], var\[]...\[] | var\[]...\[]   |
| !     | Odejmowanie (**-**)   | var\[]...\[], var\[]...\[] | var\[]...\[]   |
| !     | Mnożenie (\*\*\*\*\*) | var\[]...\[], var\[]...\[] | var\[]...\[]   |
| !     | Dzielenie (**/**)     | var\[]...\[], var\[]...\[] | var\[]...\[]   |

## Ćwiczenie: formuła złotej spirali

> Pobierz plik przykładowy, klikając poniższe łącze.
>
> Pełna lista plików przykładowych znajduje się w załączniku.

{% file src="/files/82OfFPfgk9RySkzKIkrE" %}

### Część I. Formuła parametryczna

Połącz operatory i zmienne, aby utworzyć bardziej złożone zależności za pomocą **formuł**. Użyj suwaków, aby utworzyć formułę, którą można sterować za pomocą parametrów wejściowych.

1. Utwórz sekwencję liczb reprezentującą „t” w równaniu parametrycznym. Lista powinna być wystarczająco duża, aby można było zdefiniować spiralę.

**Number Sequence**: zdefiniuj sekwencję liczb w oparciu o trzy wejścia: *start, amount* i *step*.

!

2\. W powyższym kroku utworzono listę liczb definiujących dziedzinę parametryczną. Następnie utwórz grupę węzłów reprezentujących równanie złotej spirali.

Złota spirala jest zdefiniowana jako równanie:

$$
x = r cos θ = a cos θ e^{bθ}
$$

$$
y = r sin θ = a sin θe^{bθ}
$$

Poniższa ilustracja przedstawia złotą spiralę w postaci programowania wizualnego. Podczas przechodzenia przez grupę węzłów należy zwrócić uwagę na analogię pomiędzy programem wizualnym a równaniem pisemnym.

!

> a. **Number Slider**: dodaj dwa suwaki liczb do obszaru rysunku. Suwaki te reprezentują zmienne *a* i *b* równania parametrycznego. Te elementy reprezentują stałą, która jest elastyczna, lub parametry, które można dostosować do żądanego wyniku.
>
> b. **Multiplication (\*)**: węzeł mnożenia jest reprezentowany przez gwiazdkę. Użyjemy tego wielokrotnie, aby połączyć zmienne mnożenia.
>
> c. **Math.RadiansToDegrees**: wartości „*t*” muszą zostać przekształcone w stopnie w celu ich oszacowania w funkcjach trygonometrycznych. Należy pamiętać, że podczas szacowania tych funkcji dodatek Dynamo domyślnie obsługuje wartości w stopniach.
>
> d. **Math.Pow**: jako funkcja wartości „*t*” i liczby „*e*” tworzy to ciąg Fibonacciego.
>
> e. **Math.Cos i Math.Sin**: te dwie funkcje trygonometryczne będą różnicować współrzędną x i współrzędną y każdego punktu parametrycznego.
>
> f. **Watch**: teraz widzimy, że wynik to dwie listy — współrzędne *x* i *y* punktów użytych do wygenerowania spirali.

### Część II. Od formuły do geometrii

Teraz zestaw węzłów z poprzedniego kroku będzie działać poprawnie, ale to sporo pracy. Aby utworzyć wydajniejszy proces roboczy, zapoznaj się z częścią [DesignScript](/pl/8_coding_in_dynamo/8-1_code-blocks-and-design-script/2-design-script-syntax.md) w celu definiowania ciągu wyrażeń Dynamo w jednym węźle. W następnej serii kroków przeanalizujemy używanie równania parametrycznego do rysowania spirali Fibonacciego.

**Point.ByCoordinates:** połącz górny węzeł multiplication z wejściem *„x”*, a dolny — z wejściem *„y”*. Na ekranie pojawi się spirala parametryczna punktów.

!

**Polycurve.ByPoints:** połącz węzeł **Point.ByCoordinates** z poprzedniego kroku z węzłem *points*. Węzeł *connectLastToFirst* możemy pozostawić bez wejścia, ponieważ nie tworzymy krzywej zamkniętej. Spowoduje to utworzenie spirali przechodzącej przez każdy punkt zdefiniowany w poprzednim kroku.

!

Mamy gotową spiralę Fibonacciego. Przekształcimy to jeszcze bardziej w dwóch osobnych ćwiczeniach, tworząc kształty nautilusa i słonecznika. Są to abstrakcje systemów naturalnych, ale zapewni to dobrą reprezentację tych dwóch różnych zastosowań spirali Fibonacciego.

### Część III. Od spirali do nautilusa

**Circle.ByCenterPointRadius:** użyjemy tutaj węzła circle z tymi samymi wejściami co w poprzednim kroku. Domyślną wartością promienia jest *1,0*, dlatego natychmiast widoczne będą wyniki okręgów. Od razu staje się jasne, w jaki sposób te punkty odbiegają dalej od początku.

!

**Number Sequence:** jest to oryginalny szyk „*t*”. Przez połączenie tej pozycji z wartością **Circle.ByCenterPointRadius** środki okręgów wciąż odbiegają dalej od początku, ale promień okręgów rośnie, tworząc interesujący wykres okręgów Fibonacciego.

Jeszcze lepiej, jeśli uda Ci się przekształcić go w wykres 3D.

!

### Część IV. Od nautilusa do ulistnienia

Mamy już powłokę nautilusa — przejdźmy do siatek parametrycznych. Użyjemy podstawowego obrotu na spirali Fibonacciego, aby utworzyć siatkę Fibonacciego, a wynik zostanie wymodelowany na wzór [rosnących nasion słonecznika](https://blogs.unimelb.edu.au/sciencecommunication/2018/09/02/this-flower-uses-maths-to-reproduce/).

Punktem wyjścia będzie ten sam krok co w poprzednim ćwiczeniu: utworzenie szyku spirali punktów za pomocą węzła **Point.ByCoordinates**.

Następnie wykonaj te minikroki, aby wygenerować serię spiral o różnych obrotach.

!

> a. **Geometry.Rotate:** dostępnych jest kilka opcji **Geometry.Rotate**. Należy pamiętać, aby wybrać węzeł z wejściami *geometry*, *basePlane* i *degrees*. Połącz węzeł **Point.ByCoordinates** z wejściem geometry. Kliknij prawym przyciskiem myszy ten węzeł i upewnij się, że skratowanie jest ustawione na Iloczyn wektorowy
>
> b. **Plane.XY:** połącz z wejściem *basePlane*. Wykonamy obrót wokół początku, który ma to samo położenie co podstawa spirali.
>
> c. **Number Range:** na potrzeby wartości wejściowej w stopniach utworzymy wiele obrotów. Można to zrobić szybko za pomocą węzła **Number Range**. Połącz to z wejściem *degrees*.
>
> d. **Number:** aby zdefiniować zakres liczb, dodaj trzy węzły number do obszaru rysunku w kolejności pionowej. Od góry do dołu przypisz odpowiednio wartości *0,0, 360,0* i *120,0*. Sterują one obrotem spirali. Zwróć uwagę na wyniki z wyjścia węzła **Number Range** po połączeniu trzech węzłów number z tym węzłem.

Nasz wynik zaczyna przypominać wir. Dostosuj niektóre parametry węzła **Number Range** i obserwuj, jak zmieniają się wyniki.

Zmień rozmiar kroku (step) węzła **Number Range** z *120,0* na *36,0*. Zwróć uwagę, że w ten sposób powstaje więcej obrotów, co zapewnia gęstszą siatkę.

!

Zmień rozmiar kroku (step) węzła **Number Range** z *36,0* na *3,6*. Daje to teraz dużo gęstszą siatkę, a kierunkowość spirali jest niejasna. W ten sposób utworzyliśmy słonecznik.

!


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://primer2.dynamobim.org/pl/5_essential_nodes_and_concepts/5-3_the-building-blocks-of-programs/2-math.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
