algorytm obliczania wartości sinus

Odpowiedz Nowy wątek
2015-02-03 18:14
0

Znalazłem w necie algorytm, który rysuje funkcję sinus. Wszystko pięknie działa, ale usiłuję ten algorytm zrozumieć i za chiny nie mogę.

PointF[] points = new PointF[450];
for (int i = 0; i<points.Length; i++)
            {

                //to rozumiem
                points[i].X = i;

                //tego nie rozumiem - tzn. już doszedłem dlaczego "1-...", ale nie rozumiem dlaczego 2/(1-...) - po co to głupie dzielenie?
                // i nie rozumiem dlaczego jest "i*2*..."
                points[i].Y =100 / 2 * (1 - (float)Math.Sin(i * 2 * Math.PI / 200));

            }
edytowany 2x, ostatnio: finito, 2015-02-03 18:18

Pozostało 580 znaków

2015-02-03 18:23
1

Tam nie masz 2/(1-..., tylko 50 * (1 - ... - wygląda na to, że chodzi o skalowanie po prostu.


Pozostało 580 znaków

2015-02-03 18:29
3

To nie jest algorytm tylko skalowanie.
Liczba 50 (100/2) odpowiada za wysokość wykresu.
Część "1-" odpowiada za odwrócenie względem osi Y i przesunięcie ofsetowe na osi Y.
Część " 2 PI / 200" odpowiada za szerokość wykresu względem okresu funkcji. Im większy mnożnik tym impulsy będą częstsze.


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

2015-02-03 18:33
0

A o co chodzi z tym skalowaniem?

edit:
Sory, za szybko zapytałem. Przeanalizuję i się zobaczy.

edytowany 1x, ostatnio: finito, 2015-02-03 18:35

Pozostało 580 znaków

2015-02-03 18:43
0

Okej, a skąd ??? tzn. dlaczego jest "2*pi/200" ? Tak się zastanawiam...chyba matma się kłania, ale serio...nie pamiętam tego po prostu i nie wiem z czego to wynika.

vpiotr napisał(a):

To nie jest algorytm tylko skalowanie.
Liczba 50 (100/2) odpowiada za wysokość wykresu.
Część "1-" odpowiada za odwrócenie względem osi Y i przesunięcie ofsetowe na osi Y.
Część " 2 PI / 200" odpowiada za szerokość wykresu względem okresu funkcji. Im większy mnożnik tym impulsy będą częstsze.

Pozostało 580 znaków

2015-02-03 19:06
0
finito napisał(a):

Okej, a skąd ??? tzn. dlaczego jest "2*pi/200" ? Tak się zastanawiam...chyba matma się kłania, ale serio...nie pamiętam tego po prostu i nie wiem z czego to wynika.

Ta liczba może być dowolna - w zależności od tego jak chcesz żeby wyglądał wykres.
Akurat tu masz to ładnie podane czyli okres (= 2 PI) jest rozrzedzony 200 razy. Czyli to co powinno być w punkcie x = PI, pojawi się w punkcie x = PI200.
Narysuj wykres i poeksperymentuj z tymi wartościami.


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

2015-02-03 19:09
0

A o co chodzi z tym skalowaniem?

O to że sinus przyjmuje wartości rzeczywiste od -1 do +1, a okresem funkcji jest liczba niewymierna, co się nijak ma do skończonej i dyskretnej rozdzielczości monitora.

Pozostało 580 znaków

2015-02-03 19:46
0

A to w takim razie jeszcze jedno:
Czy to: 2pi/200 oznacza to samo co to (2pi)/200 ??? bo wydawało mi się, że nie...

Pozostało 580 znaków

2015-02-03 19:53

To Ci się źle wydawało. Ale 200/2pi, to coś zupełnie innego niż 200/(2pi).


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0