Dopasować okrąg
POSTAWIENIE PROBLEMU
Wyznaczyć 'najlepiej dopasowany' okrąg w punkcie W = [x(t0), y(t0)] do krzywej zadanej parametrycznie: x = x(t), y = y(t).
Np. środkowy okrąg wygląda na 'najlepiej dopasowany' spośród trzech na rysunku dla paraboli w jej wierzchołku W
> "Jak sprecyzować pojęcie 'najlepiej dopasowany okrąg'? Jak go znaleźć?":
Pomocnicze procedury
>
>
>
Uwaga: w MAPLE'u są takie funkcje jak: odległość, iloczyn skalarny; jednak poniżej definiujemy WŁASNE (dla wygody?).
>
PRZYKŁAD
dla paraboli y=x^2 w wierzchołku W (dla młodszego licealisty)
> W "pobliżu" wierzch. W paraboli wybieramy symetrycznie punkty A,B
> Dla trójkąta WAB środek S okręgu opisanego leży oczywiście na osi OY .
> Warunek SW = SA (zapisany analitycznie) pozwoli wyznaczyć współrzędną s środka S.
> Rozwiązujemy więc to równanie (na papierze równie łatwo):
Zatem widać, że gdy
A,B
są blisko
W
, czyli gdy
a
jest "malutkie", to wartość
s
jest prawie równa 1/2.
Stąd "najlepiej dopasowany" okrąg ma środek w
S
= [0, 1/2 ] i promień 1/2 (uruchom poniższą animację).
> r:=s:display({plot(x^2,x=-1.3..1.3,color=blue),animate({okr,seq([t*a*j,t*a^2,t=0..1],j=[-1,1]),[a*(1-2*t),a^2,t=0..1]},a=-1..0,color=red)});
>
POMYSŁ I..
Środki P =[ xp, yp ] okręgów opisanych na trójkątach ABC dla punktów A,B,C tej krzywej, bliskich punktowi W, "powinny" przybliżać środek S1 szukanego okręgu.
Uwaga: w MAPLE'u są takie funkcje jak: odległość, iloczyn skalarny; jednak poniżej definiujemy WŁASNE (dla wygody?).
>
> ("techniczne wyczyszczenie" zmiennych)
>
> symetralne odcinków AB i BC
> przecięcie symetralnych
> przypisanie zmiennym xp, yp obliczanych wartości (już MAPLE 'tak ma')
>
szukane S1 jest granicą P=[xp,yp]
TO Trochę straszne; D to operator pochodnej -- częste w MAPLE'u .
> r1 :=simplify(odl(W,S1)); promień 'najlepiej dopasowanego okręgu' jest oczywiście równy odległości punktów W i S
>
Zastosowanie.
Definiujemy krzywą (parametrycznie):
>
x:=t->t;
y:=t->cos(t)-3/4;
> teraz środek S i promień r wyznaczonego okręgu zależą (tylko) od t0
Np. dla t0 = mamy:
>
Na koniec trochę obrazków (szczegóły MAPLE'a są trochę 'okrutne' -- może można je pominąć?):
>
Proszę oglądnąć w przypadku innych krzywych (wystarczy zmienić definicję x(t) i y(t) )
POMYSŁ II.
Punkty Q =[ xq, yq ] przecięcia normalnych (tj. prostopadłych do krzywej) wystawionych w punktach A,W tej krzywej, gdy A jest bliskich punktowi W , "powinny" przybliżać środek S2 szukanego okręgu.
> (to "techniczne wyczyszczenie" zmiennych)
>
> wektory styczne do krzywej w A i W
> normalne w A i B
> przecięcie normalnych
> przypisanie zmiennym xq, yq obliczanych wartości (już MAPLE 'tak ma')
> szukane S2 jest granicą Q
> r2:='odl(W,S2)'; promień 'najlepiej dopasowanego okręgu' jest równy odległości punktów W i S
>
Zastosowanie.
Definiujemy krzywą parametrycznie:
>
x:=t->t;
y:=t->t^2/3-3;
> teraz środek S i promień r wyznaczonego okręgu zależą (tylko) od t0
Np. dla t0 = 1 mamy:
>
Na koniec trochę obrazków (szczegóły MAPLE'a są trochę 'okrutne' -- może można je pominąć?):
>
Proszę oglądnąć w przypadku innych krzywych (wystarczy zmienić definicję x(t) i y(t) )
POMYSŁ III.
Dla punktu M tej krzywej (bliskiegu punktowi W ), znajdujemy okrąg przechodzący przez W i M o środku N =[ xn, yn ] na normalnej (prostopadłej) do krzywej wystawionej w punkcie W. Punkt N "powinien" przybliżać środek S3 szukanego okręgu.
> ("techniczne wyczyszczenie" używanych zmiennych)
>
> wektor styczny do krzywej w punkcie W
> normalna w W oraz symetralna odcinka MW
> ich przecięcie
> przypisanie zmiennym xn, yn obliczanych wartości (już MAPLE 'tak ma')
> szukane S3 jest granicą N
> promień 'najlepiej dopasowanego okręgu' jest oczywiście równy odległości punktów W i S
>
Zastosowanie.
Definiujemy krzywą parametrycznie:
>
x:=t->t;
y:=t->t*(t-1)*(t+2)/3+1;
> teraz środek S i promień r okręgu zależą (tylko) od t0
Np. dla t0 = -1 mamy:
>
Na koniec trochę obrazków (szczegóły MAPLE'a są trochę 'okrutne')::
>
Proszę oglądnąć w przypadku innych krzywych (wystarczy zmienić definicję x(t) i y(t) )
PODSUMOWANIE
Czy te pomysły dają TEN SAM efekt? Czy S1 = S2 = S3 ???
Dla konkretnej krzywej:
>
x:=t->t;
y:=t->t^3-t^2+3/4;
>
'S1'=S1;'r1'=r1;
'S2'=S2;'r2'=r2;
'S3'=S3;'r3'=r3;
Można 'zmusić' MAPLE'a by sprawdził za nas czy S1 = S2 = S3 oraz r1 = r2 = r3 :
>
'S1 - S2'= simplify( S1 - S2);
'S2 - S3'= evala( S2 - S3);
'r1 - r2'= simplify( r1 - r2);
'r2 - r3'= simplify( r2 - r3);
Dla innej krzywej mamy:
>
x:=t->t;
y:=t->t^4-2;
>
'S1'=simplify(S1),'r1'=simplify(r1);
'S2'=simplify(S2),'r2'=simplify(r2);
'S3'=simplify(S3),'r3'=simplify(r3);
Można 'zmusić' MAPLE'a by sprawdził za nas czy S1 = S2 = S3 oraz r1 = r2 = r3 :
>
'S1 - S2'= simplify( S1 - S2);
'S2 - S3'= simplify( S2 - S3);
'r1 - r2'= simplify( r1 - r2);
'r2 - r3'= simplify( r2 - r3);
A ogólnie? (Najpierw 'wykasujemy' definicje krzywej)
> x:='x'; y:='y';
>
'S1'=simplify(S1),'r1'=simplify(r1);
'S3'=simplify(S3),'r3'=simplify(r3);
Słabo widać, więc "zmuśmy" MAPLE'a by uprościł różnice:
>
'r1 - r3' = simplify(r1-r3);
'S1 - S3' = simplify(S1-S3);
Zera są dowodem tożsamości: S1 = S3 i r1 = r3 !!! TO JEST DOWÓD !!!
(Pomijamy tu dowód S1 = S2 i r1 = r2 .) Oczywiście otrzymane wzory ogólne są poprawne przy pewnych założeniach, czego tu nie będziemy analizować.
Uwaga: w podręcznikach analizy matematycznej znaleziony tu "najlepiej dopasowany" okrąg nazywa się okręgiem krzywizny , jego środek -- środkiem krzywizny , promień -- promieniem krzywizny , a odwrotność promienia -- krzywizną krzywej w punkcie W.