Animacja Komputerowa. Interpolacjausers.pja.edu.pl/~denisjuk/ak/wyklady/03-interp.pdf ·...
Transcript of Animacja Komputerowa. Interpolacjausers.pja.edu.pl/~denisjuk/ak/wyklady/03-interp.pdf ·...
1 / 47
Animacja Komputerowa. Interpolacja
Aleksander DenisiukPolsko-Japońska Akademia Technik Komputerowych
Wydział Informatyki w Gdańskuul. Brzegi 5580-045 Gdańsk
Interpolacja
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
2 / 47
Najnowsza wersja tego dokumentu dostępna jest pod adresemhttp://users.pja.edu.pl/~denisjuk/
Zagadnienie Interpolacji
ZagadnienieInterpolacji
Zagadnienieinterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
3 / 47
Zagadnienie interpolacji
ZagadnienieInterpolacji
Zagadnienieinterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
4 / 47
� Dane są wartości parametrów w klatkach kluczowych
� współrzędne położenia, kąt nachylenia, obrót rękirobota, etc
� Określić wartości w klatkach pośrednich
� rozpędzanie i spowalnianie, ciągłość
Interpolacja a aproksymacja
ZagadnienieInterpolacji
Zagadnienieinterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
5 / 47
� Interpolacja: krzywe przechodzą dokładnie przez punkty
� krzywe sklejane, interpolacja Hermite’a
� Aproksymacja: dane są punkty kontrolne
� krzywe Beziera, B-sklejane
Złożoność funkcji
ZagadnienieInterpolacji
Zagadnienieinterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
6 / 47
� Wielomiany trzeciego stopnia
� można podawać położenia i prędkości punktówkońcowych
� Wielomiany niższego stopnia
� nie mają punktów przegięcie� krzywe są płaskie
� Wielomiany wyższego stopnia
� nie dają istotnych korzyści� są bardziej skomplikowane obliczeniowo
Ciągłość
ZagadnienieInterpolacji
Zagadnienieinterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
7 / 47
� Ciągłość zerowego rzędu� Ciągłość pierwszego rzędu: ciągły kierunek stycznej(prędkość)
� Ciągłość drugiego rzędu: ciągła krzywizna (przyśpieszenie)
Globalna i lokalna kontrola kształtu
ZagadnienieInterpolacji
Zagadnienieinterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
8 / 47
� Kontrola lokalna
� zmiana jednego punktu ma wpływ na ograniczoną część
� splajny Catmulla-Roma, sklejane parabole, B-spline
� Kontrola globalna
� zmiana jednego punktu ma wpływ na całą krzywą
� interpolacja Lagrange’a
Sterowanie Ruchem
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
9 / 47
Sterowanie ruchem punktu wzdłuż krzywej
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
10 / 47
� Określona jest funkcja interpolacyjna P (u) ∈ R3
� równomierna zmiana parametru u nie oznacza ruchu zestałą prędkością
� parametryzacja łukowa s = s(u), length(u1, u2)
Obliczanie analityczne
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
11 / 47
� length(u1, u2) =u1∫
u1
|P (u)| du =
u1∫
u1
√
(
dx(u)du
)2+(
dy(u)du
)2+(
dz(u)du
)2du
� krzywa kubiczna� płaska krzywa kwadratowa
Przybliżone obliczanie
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
12 / 47
� Dane są węzły u0 ¬ u1 ¬ · · · ¬ un� Obliczamy P (u0), . . . , P (un)� Tablica odległości:
� G(0) = 0,� G(1) = dist(P0, P1),� G(2) = G(1) + dist(P1, P2),� etc
� Dla oszacowania długości używana jest interpolacja liniowa� length(u1, u2) ≈ G(u2)−G(u1)
Przykład
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
13 / 47
i u G
0 0,00 0,0001 0,05 0,0802 0,10 0,1503 0,15 0,2304 0,20 0,3205 0,25 0,4006 0,30 0,5007 0,35 0,6008 0,40 0,7209 0,45 0,80010 0,50 0,860
i u G
11 0,55 0,90012 0,60 0,15013 0,65 0,92014 0,70 0,93215 0,75 0,94416 0,80 0,95917 0,85 0,97218 0,90 0,98419 0,95 0,99820 1,00 1,000
� s(0,73) ≈ 0, 953� u(0,75) ≈ 0, 41875
Błędy obliczeniowe
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
14 / 47
� Gęstsze tablicowanie� Interpolacja wyższego rzędu� Adaptacja∣
∣
∣
∣
‖P (0)− P (1)‖ −(
‖P (0)− P(
12
)
‖+ ‖P(
12
)
− P (1)‖)∣
∣
∣
∣
< ε
Całkowanie numeryczne
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
15 / 47
� Kwadratura Gaussa1∫
−1f(u) du ≈
∑
i
wif(i)
� Dowolny przedział� Adaptacja
Rozwiązywanie równań
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
16 / 47
� length(u0, u) = s� Metoda Newtona f(t) = 0
tn+1 = tn −f(tn)f ′(tn)
� Metoda siecznych� Wyszukiwanie binarne
Sterowanie prędkością
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
17 / 47
� s(t), gdzie t —czas� Ruch ze stałą prędkością
� s(t) jest funkcją liniową
� ease-in/ease-out
� P (u(s(t)))
� Funkcja odległości powinna być monotoniczna� Funkcja odległości powinna być ciągła� Normalizacja: s ∈ [0, 1], t ∈ [0, 1]
sin t
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
18 / 47
� s(t) = ease(t) =sin(πt−π2 )+1
2
Fragmenty funkcji sinusoidalnej
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
19 / 47
� ease(t) =
2k1πf
(
sin(
πt2k1− π2)
+ 1)
, dla t < k1(
2k1π+ t− k1
)/
f, dla k1 ¬ t < k2(
2k1π+ k2 − k1 +
2(1−k2)πsin(π(t−k2)2(1−k2)
)
)/
f, dla k2 ¬ tgdzie f = 2k1/π + k2 − k1 + 2(1− k2)/π.
π 2⁄ π 2⁄
1.0k1 k2
k1
π 2⁄----------
k2 k1–
1.0 k2–
π 2⁄------------------
Wielomian trzeciego stopnia
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
20 / 47
� ease(t) = −2t3 + 3t2
� Styczne w końcach przedziału [0, 1] są poziome� brak przedziału ze stałą prędkością
Stałe przyśpieszenie
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
21 / 47
� a(t) =
a+ dla 0 < t < t1,
0 dla t1 < t < t2,
a− dla t2 < t < 1.
� v(t) =
v0tt1
dla 0 < t < t1,
v0 dla t1 < t < t2,
v0(
1− t−t21−t2
)
dla t2 < t < 1.� s(t) =
v0t2
2t1dla 0 < t < t1,
v0t12 + v0(t− t1) dla t1 < t < t2,
v0t212 + v0(t− t1) + v0
(
1− 12t−t21−t2
)
(t− t1) dla t2 < t < 1.
Dopasowanie do danej prędkości
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
22 / 47
0.0 1.0
0.0
1.0
5.0
0.0 1.0
0.0
1.0
5.0
User specified velocitiesPossible solution to enforce totaldistance covered equal to one
0.0 1.0
0.0
1.0
5.0
User specified velocities
0.0 1.0
0.0
1.0
5.0
Possible solution to enforce totaldistance covered (signed area
velocity
time
timetime
time
velocity
velocity velocity
under the curve) equal to one
Przykłady funkcji odległości
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
23 / 47
a) starts and ends abruptly b) backs up
c) stalls d) smoothly starts and stops
e) starts part way along the curve and f) waits awhile before starting andgets to the end before t=1.0 doesn’t get all the way to the end
s
t t
t
s
ss
t
t
s
t
s
Warunki na ruch
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
24 / 47
� (ti, si, vi, ai)
s
t
s
t
s
t
s
t
resulting curvevelocity-distance-time constraints specified
Dopasowanie do par położenie-czas
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
25 / 47
P1
P2
P3
P4
time = 0
time = 10
time = 35
time = 60
P5
P6
time=50
time=55
� Warunki (Pi, ti), i = 1, . . . , j.
� Krzywe B-sklejane P (t) =n+1∑
l=1BlNl,k(t), 2 ¬ k ¬ n+ 1 ¬ j
� Układ P = NB
� B = N−1P
� Regularyzacja
� NTP = NTNB
� B = (NTN)−1NTP
Interpolacja kwaternionów
ZagadnienieInterpolacji
SterowanieRuchemSterowanieruchemObliczaniedługości łuku
Metodynumeryczne
Sterowanieprędkością
Rozpędzaniei zatrzymanie
Ogólne funkcjeodległości
Interpolacjakwaternionów
WykorzystanieŚcieżek
26 / 47
� Linowa: q(u) = (1− u)q0 + uq1� Łukowa (slerp): q(u) = sin(1−u)θsin θ q1 +
sinuθsin θ q2
� Interpolacja krzywymi Beziera
� w algorytmie de Casteljau użyć slerp
Wykorzystanie Ścieżek
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
27 / 47
Ruch po ścieżce
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
28 / 47
� Dany jest tor ruchu obiektu (kamery), sparametryzowanydługością łuku oraz funkcja przesunięcia
� ustalić zmianę położenia oraz zorientowania� jeżeli punkty na torze pochodzą z pomiarów, trzeba torwygładzić
� dodatkowo ścieżka może leżeć na powierzchni innegoobiektu
� ścieżka bezkolizyjna
Zorientowanie wzdłuż ścieżki
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
29 / 47
� Lokalny układ współrzędnych (u, v, w) (prawoskrętny)� Początek jest na ścieżce P (s)
v
w
POSP(s)
u
Układ Freneta
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
30 / 47
� Jean Frederic Frenet, 1847
w =P ′(s)|P ′(s)|
u =P ′′(s)× P ′(s)|P ′′(s)× P ′(s)|
v = u× w
Układ Freneta, problemy
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
31 / 47
� Brak naturalnego kierunku „do góry”� Punkty spłaszczenia (P ′′(s) = 0)
� interpolacja na odcinkuvi
vjwi wj
ui uj
� Nieciągłość wektoru normalnego (dwa półokręgi)� Wektor styczny nie określa kierunku, do którego podążaobiekt
� Wektor v (kierunek „do góry”) może gwałtonie się obracać
Układ Freneta, ważna informacja
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
32 / 47
� Wektor normalny wskazuje kierunek skrętu
� można pochylić obiekt w tę stronę� bądź w przeciwnym kierunku (siła odśrodkowa)
Ruch kamery po ścieżce
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
33 / 47
� Wybrać środek zainteresowania (COI) w ustalonym pinkciesceny (w srodku jednego z obiektów)
� w = COI− POS
� Niech oś Oy określa kierunek „do góry”
� u = w × y� v = u× w
Kierunek patrzenia
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
34 / 47
� Kierunek do COI
� przechodzenie blisko COI może spowodować gwałtownezmiany kierunku
� Punkty na krzywej� Punkty na innej krzywej� Interpolowane punkty na scenie� Kierunek „do góry”:
� w płaszczyźnie w i y� odchylony od tego kierunku
Wybór środka zainteresowania
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
35 / 47
� Punkt na krzywej z wyprzdzeniem P (s+∆s)
� wykorzystać parametryzację łukową� na końcu ścieżki można użyć interpolacji z wektoremstycznym w końcowym punkcie
� chwiejąca się kamera
� uśrednienie kilka punktów krzywej
� za mało punktów (albo blisko siebie) — efektpozostaje
� za dużo punktów — kamera będzie zbytstatyczna
� Wprowadzenie dla COI funkcji C(s)� Można wprowadzić dla kierunku „do góry” funkcję U(s)w = C(s)− P (s), u = w × (U(s)− P (s)), v = u× w.
Wygładzanie ścieżki
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
36 / 47
� Jeżeli kolejne punkty pochodzą z pomiarów, to może byćpotrzebne wygładzanie
Interpolacja liniowa
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
37 / 47
� p′i =12
(
pi +pi−1+pi+12
)
= 14pi−1 +12pi +
14pi+1
Interpolacja sześcienna
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
38 / 47
� P (u) — wielomian stopnia 3, przechodący przez sąsiadującepunkty P (0) = pi−1, P (14) = pi−1, P (
34) = pi+1, P (1) = pi+2
� p′i =12
(
P (12) + p1)
� układ równań� wzór Lanrange’a� wzór Newtona
� Na końcach przedziału można użyć paraboli P (0) = p0,P (23) = p2, P (1) = p3, p
′
1 =12
(
P (13) + p1)
� Pierwszy punkt bez zmian
� można użyć krzywej drugiego stopnia:p′0 = p3 + 3(p1 − p2)
Interpolacja sześcienna, przykład
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
39 / 47
x
y
Użycie splotu
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
40 / 47
� pi = f(xi)
� Splot: f ⋆ g(x) =∞∫
−∞
f(x+ u)g(u) du
� g(u) — filtr,∞∫
−∞
g(u) du = 1
� Całkę można obliczyć numerycznie� W punktach końcowych funkcję można dowolnie rozszerzyć
Przykłady filtrów
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
41 / 47
20
1/20
10
1/10
20
1/10
� prostokątny, dachowy, gaussowski
Splot z filtrem dachowym
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
42 / 47
1/8 3/4 1/8
v1
v2 v3
a) smoothing kernel superimposed
1.0v1
� v = 18v1 +34v2 +
18v3
Aproksymacja krzywymi B-sklejanymi
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
43 / 47
� Można użyć krzywych B-sklejanych
� wynik – gładka krzywa� nie przechodzi przez dane węzły
Wyznaczenie śceżki na powierzchni
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
44 / 47
� Dane są dwa punkty na powierzchni� Ścieżka najkrótsza — kosztowne obliczeniowo� Ścieżka prawie najkrótsza:
� płaszczyna łacząca końce ścieżki i możliwie prostopadłado powierzchni
Wyznaczenie śceżki na powierzchni
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
45 / 47
� Powierzchnia parametryzowana P = P (u, v)
� połaczyć w dziedzinie (u, v) końce ścieżki odcinkiem(łukiem)
� Skomplikowany mash z trójkątów
� algorytm zachłanny wyznaczenia ścieżki z krawędzimasha
� łączymy bieżący punkt z końcem odcinkiem� wybieramy krawędź, która ma najmniejszy kątz odcinkiem
� obliczamy kosinusy
Ścieżka najszybszego spadku
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
46 / 47
N (vector normal to surface)
Y (Global “up” vector: y-axis)
A N Y×=
D Y A×=
Ścieżki bezkolizyjne
ZagadnienieInterpolacji
SterowanieRuchem
WykorzystanieŚcieżek
Ruch po ścieżce
Zorientowaniewzdłuż ścieżki
Kamera
Wygładzanie
Ścieżka napowierzchni
47 / 47
� Nieruchome przeszkody (albo rozhome o wiadomych torach)
� wyznaczenie punktów pośrednich� przybliżenie przeszków prostymi obiektami (sfera,prostopadłóościan)
� Ruchome prezszkody
� poszukiwanie możliwego przedłużenia ścieżki przedprzeszkodą (algorytm zachłanny)
� ruch przeszkod jest pzewidywalny