Autor Wątek: Jak łączyć sinusoidy wygenerowane przy różnych parametrach.  (Przeczytany 2419 razy)

Offline kokos22

  • Użytkownik

# Luty 23, 2016, 11:26:30

Interesuje mnie efekt jak na załączonym obrazie. Jak łączyć sinusoidy w sposób przyjemny dla oka przy różnych parametrach każdej z krzywych ? Chodzi tu o losowe generowanie "płynnego" terenu.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline koirat

  • Użytkownik

  • +1
# Luty 23, 2016, 12:07:19
1. Poczytaj o szumie perlina.

2. Jeśli chodzi o metodę z sinusoidami. Składasz funkcje z sinusoidalnych sub funkcji o następującym wzorze:
A*sin(B*x+C) + D

A,B,C i D  to stałe które oznaczają kolejno:

A - połowa odległości od najmniejszej do największej wartości sinusoidy.
B - rozciągnięcie/zwężenie sinusoidy.
C - przesunięcie sinusoidy w lewo lub prawo.
D - Przesunięcie sinusoidy w górę i w dół


Nie wiem co znaczy sinusoidy przyjemne dla oka ?
Dla mnie wszystkie sinusoidy są przyjemne dla oka.

Offline Xender

  • Użytkownik

# Luty 23, 2016, 13:27:00
Jak już jesteśmy przy Perlinie, to zachęcam pogrzebać w artykułach tutaj:
http://www.iquilezles.org/www/index.htm

Offline mwojt

  • Użytkownik

# Luty 23, 2016, 14:36:26
Sinusoidy chyba nie są najlepszym pomysłem, lepiej było by użyć interpolacji kwadratowej i właśnie jakiegoś szumu.

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

  • +1
# Luty 23, 2016, 17:40:58
Jak połączyć sinusoidy? Po prostu je do siebie dodać :)

Żeby mieć pod kontrolą zakres otrzymywanych wartości, warto pamiętać, że sinus i cosinus zwraca wartości z zakresu -1...1. Po dodaniu dwóch takich otrzymamy możliwy zakres -2...2 itd. W razie potrzeby można go przeskalować do innego zakresu mnożąc i dodając jakąś stałą.

Jako "sposób przyjemny dla oka" - ten stosowany w funkcji nazywanej zwyczajowo szumem Perlina, złożonej z kilku tzw. oktaw - możnaby określić podanie takich współczynników, gdzie sinusy o większej amplitudzie (stała, przez którą mnoży się wynik sinusa) mają dłuższy okres (mniejszą częstotliwość - mniejszą stałą, przez którą mnoży się parametr w środku sinusa), np.:

3 * sin(1 * x) + 1 * sin(3 * x)

Offline Xion

  • Redaktor
    • xion.log

  • +1
# Luty 23, 2016, 18:37:51
Zobaczyłem "łączyć", i już chciałem zacząć wykład o tym, że jeśli chcesz sklejasz krzywe to muszą one mieć przynajmniej pierwszą pochodną równą w punkcie sklejenia, a najlepiej co jeszcze i drugą żeby było gładziej, i jak to się przekłada na równanie sinusoidy, itd. itp.

A tu się okazało że chcesz po prostu te sinusoidy na siebie nałożyć. Eh... Tak, dodaj i przeskaluj. That's all there is to it.

Offline Xender

  • Użytkownik

# Luty 23, 2016, 22:10:13
Aha, no i współczynniki raczej "przypadkowe" niż okrągłe liczby - dodanie do siebie harmonicznych niekoniecznie będzie ładnie wyglądać - raczej zbyt symetrycznie,sztucznie.

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Luty 24, 2016, 22:36:28
Zobaczyłem "łączyć", i już chciałem zacząć wykład o tym, że jeśli chcesz sklejasz krzywe to muszą one mieć przynajmniej pierwszą pochodną równą w punkcie sklejenia, a najlepiej co jeszcze i drugą żeby było gładziej, i jak to się przekłada na równanie sinusoidy, itd. itp.
Nic nie muszą. Możesz przejść między nimi miksując je wielomianem 3-go lub 5-go rzędu i będziesz miał gładkie przejście. Przykładowo jest to opisane tutaj. :)