Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową.
Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer: http://latex-beamer.sourceforge.net
1 Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 2 3 Definicje klas Definicja metody sprawdzania kolizji
Plan prezentacji Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 1 Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 2 3 Definicje klas Definicja metody sprawdzania kolizji
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh 1994 zapoczątkowanie prac nad UML 1995 pierwsza robocza wersja 0.8 1997 zaakceptowanie wersji 1.1 przez OMG (Object Managment Group) 1999 opublikowanie wersji 1.3 2004/2005 zaakceptowanie wersji 2.0 sierpień 2007 opublikowanie wersji 2.1.1
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh 1994 zapoczątkowanie prac nad UML 1995 pierwsza robocza wersja 0.8 1997 zaakceptowanie wersji 1.1 przez OMG (Object Managment Group) 1999 opublikowanie wersji 1.3 2004/2005 zaakceptowanie wersji 2.0 sierpień 2007 opublikowanie wersji 2.1.1
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh 1994 zapoczątkowanie prac nad UML 1995 pierwsza robocza wersja 0.8 1997 zaakceptowanie wersji 1.1 przez OMG (Object Managment Group) 1999 opublikowanie wersji 1.3 2004/2005 zaakceptowanie wersji 2.0 sierpień 2007 opublikowanie wersji 2.1.1
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh 1994 zapoczątkowanie prac nad UML 1995 pierwsza robocza wersja 0.8 1997 zaakceptowanie wersji 1.1 przez OMG (Object Managment Group) 1999 opublikowanie wersji 1.3 2004/2005 zaakceptowanie wersji 2.0 sierpień 2007 opublikowanie wersji 2.1.1
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh 1994 zapoczątkowanie prac nad UML 1995 pierwsza robocza wersja 0.8 1997 zaakceptowanie wersji 1.1 przez OMG (Object Managment Group) 1999 opublikowanie wersji 1.3 2004/2005 zaakceptowanie wersji 2.0 sierpień 2007 opublikowanie wersji 2.1.1
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh 1994 zapoczątkowanie prac nad UML 1995 pierwsza robocza wersja 0.8 1997 zaakceptowanie wersji 1.1 przez OMG (Object Managment Group) 1999 opublikowanie wersji 1.3 2004/2005 zaakceptowanie wersji 2.0 sierpień 2007 opublikowanie wersji 2.1.1
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh 1994 zapoczątkowanie prac nad UML 1995 pierwsza robocza wersja 0.8 1997 zaakceptowanie wersji 1.1 przez OMG (Object Managment Group) 1999 opublikowanie wersji 1.3 2004/2005 zaakceptowanie wersji 2.0 sierpień 2007 opublikowanie wersji 2.1.1
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh 1994 zapoczątkowanie prac nad UML 1995 pierwsza robocza wersja 0.8 1997 zaakceptowanie wersji 1.1 przez OMG (Object Managment Group) 1999 opublikowanie wersji 1.3 2004/2005 zaakceptowanie wersji 2.0 sierpień 2007 opublikowanie wersji 2.1.1 Strona projektu: http://www.uml.org
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas UML jest językiem znormalizowanym, służącym do zapisywania projektu systemu.
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas UML jest językiem znormalizowanym, służącym do zapisywania projektu systemu. Może być stosowany do obrazowania, specyfikowania, tworzenia i dokumentowania artefaktów powstałych podczas procesu budowy systemu informatycznego.
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas UML jest językiem znormalizowanym, służącym do zapisywania projektu systemu. Może być stosowany do obrazowania, specyfikowania, tworzenia i dokumentowania artefaktów powstałych podczas procesu budowy systemu informatycznego. UML służy do obrazowania, specyfikowania i dokumentowania systemów obiektowych.
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas UML jest językiem znormalizowanym, służącym do zapisywania projektu systemu. Może być stosowany do obrazowania, specyfikowania, tworzenia i dokumentowania artefaktów powstałych podczas procesu budowy systemu informatycznego. UML służy do obrazowania, specyfikowania i dokumentowania systemów obiektowych. UML jest przede wszystkim przeznaczony do wspomagania budowy systemów informatycznych.
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Przykładowe obszary zastosowań: tworzenie systemów informatycznych przedsiębiorstw, usług bankowych i finansowych, rozproszone usługi internetowe.
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Przykładowe obszary zastosowań: tworzenie systemów informatycznych przedsiębiorstw, usług bankowych i finansowych, rozproszone usługi internetowe.
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Przykładowe obszary zastosowań: tworzenie systemów informatycznych przedsiębiorstw, usług bankowych i finansowych, rozproszone usługi internetowe.
UML Unified Modeling Language UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Przykładowe obszary zastosowań: tworzenie systemów informatycznych przedsiębiorstw, usług bankowych i finansowych, rozproszone usługi internetowe.
Plan prezentacji Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 1 Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 2 3 Definicje klas Definicja metody sprawdzania kolizji
Przykłady diagramów UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Rysunek: Diagram klas
Przykłady diagramów UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Rysunek: Diagram klas modelujący strukturę firmy
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne.
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne. Najczęściej używane diagramy: Przypadków użycia Czynności Klas Sekwencji
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne. Najczęściej używane diagramy: Przypadków użycia Czynności Klas Sekwencji
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne. Najczęściej używane diagramy: Przypadków użycia Czynności Klas Sekwencji
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne. Najczęściej używane diagramy: Przypadków użycia Czynności Klas Sekwencji
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne. Najczęściej używane diagramy: Przypadków użycia Czynności Klas Sekwencji
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne. Najczęściej używane diagramy: Przypadków użycia służy do obrazowania zachowania systemu, podsystemu lub klasy w taki sposób, żeby użytkownicy mogli zrozumieć, jak z tego bytu korzystać, a programiści mogli go zaimplementować. Czynności Klas Sekwencji
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Ważniejsze diagramy diagram przypadków użycia
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne. Najczęściej używane diagramy: Przypadków użycia Czynności modeluje dynamiczne aspekty systemu. Demonstrują przepływ sterowania od operacji do operacji. Klas Sekwencji
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Ważniejsze diagramy diagram czynności
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne. Najczęściej używane diagramy: Przypadków użycia Czynności Klas służy do obrazowania statycznych aspektów systemu. Bierze się w nim pod uwagę wymagania funkcjonalne (usługi), jakie system powinien udostępniać swoim użytkownikom. Sekwencji
Ważniejsze diagramy diagram klas UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas
Ważniejsze diagramy UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4 abstrakcyjne. Najczęściej używane diagramy: Przypadków użycia Czynności Klas Sekwencji służy do obrazowania dynamicznych aspektów systemu. Demonstruje kolejność komunikatów w czasie, które przesyłają między sobą obiekty.
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Ważniejsze diagramy diagram sekwencji
Plan prezentacji Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 1 Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 2 3 Definicje klas Definicja metody sprawdzania kolizji
Oznaczenia Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa
Model klasy w UML UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas
Model klasy w UML UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa Wektor przykład modelu w UML class Wektor { public : double x, y; }; double Norma( ) const { return sqrt(x x+y y); }
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa Wektor przykład modelu w UML class Wektor { public : double x, y; }; double Norma( ) const { return sqrt(x x+y y); }
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa LZespolona przykład modelu w UML class LZespolona { public : double re, im; LZespolona(double re nowa, double im nowa): re(re nowa), im(im nowa) { } LZespolona Sprzezenie( ) const { return LZespolona(re,-im); } LZespolona operator + (const LZespolona& Arg2) const ; LZespolona operator (const LZespolona& Arg2) const ; }; double Modul2() const { return re re + im im; }
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa LZespolona przykład modelu w UML class LZespolona { public : double re, im; LZespolona(double re nowa, double im nowa): re(re nowa), im(im nowa) { } LZespolona Sprzezenie( ) const { return LZespolona(re,-im); } LZespolona operator + (const LZespolona& Arg2) const ; LZespolona operator (const LZespolona& Arg2) const ; }; double Modul2() const { return re re + im im; }
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa WektorZ przykład modelu w UML class WektorZ { public : LZespolona x, y; WektorZ( ): x(0,0), y(0,0) {} }; double Norma( ) const;
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa WektorZ przykład modelu w UML class WektorZ { public : LZespolona x, y; WektorZ( ): x(0,0), y(0,0) {} }; double Norma( ) const { return sqrt((x x.sprzezenie( )+y y.sprzezenie( )).re); }
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa WektorZ przykład modelu w UML class WektorZ { public : LZespolona x, y; WektorZ( ): x(0,0), y(0,0) {} }; double Norma( ) const { return sqrt(x.modul2( )+y.modul2( )); }
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa WektorZ przykład modelu w UML class WektorZ { public : LZespolona x, y; WektorZ( ): x(0,0), y(0,0) {} }; double Norma( ) const { return sqrt(x.modul2( )+y.modul2( )); }
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa WektorZ przykład modelu w UML class WektorZ { LZespolona public : Wsp[2]; }; const LZespolona& operator [ ] (unsigned int Ind) const { return Wsp[Ind]; } LZespolona& operator [ ] (unsigned int Ind) { return Wsp[Ind]; } double Norma( ) const { return sqrt(( this )[0].Modul2()+( this )[1].Modul2()); }
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa WektorZ przykład modelu w UML class WektorZ { LZespolona public : Wsp[2]; }; const LZespolona& operator [ ] (unsigned int Ind) const { return Wsp[Ind]; } LZespolona& operator [ ] (unsigned int Ind) { return Wsp[Ind]; } double Norma( ) const { return sqrt(( this )[0].Modul2()+( this )[1].Modul2()); }
Oznaczenia Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa
Oznaczenia Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa Kompozycja
Agregacja całkowita Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa WektorZ przykład modelu w UML class WektorZ { LZespolona public : Wsp[2]; }; const LZespolona& operator [ ] (unsigned int Ind) const { return Wsp[Ind]; } LZespolona& operator [ ] (unsigned int Ind) { return Wsp[Ind]; } double Norma( ) const { return sqrt(( this )[0].Modul2()+( this )[1].Modul2()); }
UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa WektorZ przykład modelu w UML class WektorZ { LZespolona public : Wsp[2]; }; const LZespolona& operator [ ] (unsigned int Ind) const { return Wsp[Ind]; } LZespolona& operator [ ] (unsigned int Ind) { return Wsp[Ind]; } double Norma( ) const { return sqrt(( this )[0].Modul2()+( this )[1].Modul2()); }
Oznaczenia Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa Kompozycja Agregacja
Agregacja zwykła Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas
Oznaczenia Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas Klasa Kompozycja Agregacja Zależność Powiazanie
Plan prezentacji Języki modelowania 1 Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 2 3 Definicje klas Definicja metody sprawdzania kolizji
Opis problemu Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości.
Opis problemu Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy.
Plan prezentacji Języki modelowania 1 Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 2 3 Definicje klas Definicja metody sprawdzania kolizji
Etapy osiągania rozwiązania Analiza Projektowanie Konstrukcja
Etapy osiągania rozwiązania Analiza jest odwzorowaniem rzeczywistego świata na jego model koncepcyjny Projektowanie Konstrukcja
Analityczne rozwiązanie problemu Rozwiązaniem problemu jest wyznaczenie najmniejszej odległości na jaką zbliżą się do siebie platformy.kolizja nie nastąpi jeżeli odległość ta będzie większa niż suma promieni okręgów opisanych na korpusach obu platform.
Analityczne rozwiązanie problemu Rozwiązaniem problemu jest wyznaczenie najmniejszej odległości na jaką zbliżą się do siebie platformy. Kolizja nie nastąpi jeżeli odległość ta będzie większa niż suma promieni okręgów opisanych na korpusach obu platform.
Analityczne rozwiązanie problemu Rozwiązaniem problemu jest wyznaczenie najmniejszej odległości na jaką zbliżą się do siebie platformy.kolizja nie nastąpi jeżeli odległość ta będzie większa niż suma promieni okręgów opisanych na korpusach obu platform. d(t) = (x 1 x 2 ) 2 + (y 1 y 2 ) 2
Analityczne rozwiązanie problemu Rozwiązaniem problemu jest wyznaczenie najmniejszej odległości na jaką zbliżą się do siebie platformy.kolizja nie nastąpi jeżeli odległość ta będzie większa niż suma promieni okręgów opisanych na korpusach obu platform. d(t) = (x 1 x 2 ) 2 + (y 1 y 2 ) 2 { x1 (t) = v x,1 t + x 0,1 y 1 (t) = v y,1 t + y 0,1 { x2 (t) = v x,2 t + x 0,2 y 2 (t) = v y,2 t + y 0,2
Analityczne rozwiązanie problemu Rozwiązaniem problemu jest wyznaczenie najmniejszej odległości na jaką zbliżą się do siebie platformy.kolizja nie nastąpi jeżeli odległość ta będzie większa niż suma promieni okręgów opisanych na korpusach obu platform. d(t) = (x 1 x 2 ) 2 + (y 1 y 2 ) 2 { x1 (t) = v x,1 t + x 0,1 y 1 (t) = v y,1 t + y 0,1 { x2 (t) = v x,2 t + x 0,2 y 2 (t) = v y,2 t + y 0,2
Analityczne rozwiązanie problemu Rozwiązaniem problemu jest wyznaczenie najmniejszej odległości na jaką zbliżą się do siebie platformy.kolizja nie nastąpi jeżeli odległość ta będzie większa niż suma promieni okręgów opisanych na korpusach obu platform. d(t) = (x 1 x 2 ) 2 + (y 1 y 2 ) 2 d(t) = { x1 (t) = v x,1 t + x 0,1 y 1 (t) = v y,1 t + y 0,1 { x2 (t) = v x,2 t + x 0,2 y 2 (t) = v y,2 t + y 0,2 ((v x,1 v x,2 )t + (x 0,1 x 0,2 )) 2 + ((v y,1 v y,2 )t + (y 0,1 y 0,2 )) 2
Analityczne rozwiązanie problemu d(t) = ((v x,1 v x,2 )t + (x 0,1 x 0,2 )) 2 + ((v y,1 v y,2 )t + (y 0,1 y 0,2 )) 2
Analityczne rozwiązanie problemu d(t) = ((v x,1 v x,2 )t + (x 0,1 x 0,2 )) 2 + ((v y,1 v y,2 )t + (y 0,1 y 0,2 )) 2 d(t) = (v x,12 t + x 0,12 ) 2 + (v y,12 t + y 0,12 ) 2 gdzie v x,12 = v x,1 v x,2 analogicznie x 0,12, v y,12, y 0,12.
Analityczne rozwiązanie problemu d(t) = ((v x,1 v x,2 )t + (x 0,1 x 0,2 )) 2 + ((v y,1 v y,2 )t + (y 0,1 y 0,2 )) 2 d(t) = (v x,12 t + x 0,12 ) 2 + (v y,12 t + y 0,12 ) 2 gdzie v x,12 = v x,1 v x,2 analogicznie x 0,12, v y,12, y 0,12. Szukamy wartość t, dla której funkcja d(.) osiąga minimum.
Analityczne rozwiązanie problemu d(t) = ((v x,1 v x,2 )t + (x 0,1 x 0,2 )) 2 + ((v y,1 v y,2 )t + (y 0,1 y 0,2 )) 2 d(t) = (v x,12 t + x 0,12 ) 2 + (v y,12 t + y 0,12 ) 2 gdzie v x,12 = v x,1 v x,2 analogicznie x 0,12, v y,12, y 0,12. Szukamy wartość t, dla której funkcja d(.) osiąga minimum. dd(t) dt = 0 v x,12 (v x,12 t + x 0,12 ) + v y,12 (v y,12 t + y 0,12 ) = 0
Analityczne rozwiązanie problemu d(t) = ((v x,1 v x,2 )t + (x 0,1 x 0,2 )) 2 + ((v y,1 v y,2 )t + (y 0,1 y 0,2 )) 2 d(t) = (v x,12 t + x 0,12 ) 2 + (v y,12 t + y 0,12 ) 2 gdzie v x,12 = v x,1 v x,2 analogicznie x 0,12, v y,12, y 0,12. Szukamy wartość t, dla której funkcja d(.) osiąga minimum. dd(t) dt = 0 v x,12 (v x,12 t + x 0,12 ) + v y,12 (v y,12 t + y 0,12 ) = 0
Analityczne rozwiązanie problemu d(t) = ((v x,1 v x,2 )t + (x 0,1 x 0,2 )) 2 + ((v y,1 v y,2 )t + (y 0,1 y 0,2 )) 2 d(t) = (v x,12 t + x 0,12 ) 2 + (v y,12 t + y 0,12 ) 2 gdzie v x,12 = v x,1 v x,2 analogicznie x 0,12, v y,12, y 0,12. Szukamy wartość t, dla której funkcja d(.) osiąga minimum. dd(t) dt = 0 v x,12 (v x,12 t + x 0,12 ) + v y,12 (v y,12 t + y 0,12 ) = 0 t = v x,12x 0,12 + v y,12 y 0,12 v 2 x,12 + v 2 y,12
Finalne rozwiązanie problemu d = ( (v x,1 v x,2 ) v x,12x 0,12 +v y,12 y 0,12 v 2 x,12 +v 2 y,12 ( + (v y,1 v y,2 ) v x,12x 0,12 +v y,12 y 0,12 vx,12 2 +v y,12 2 ) 2 + (x 0,1 x 0,2 ) + (y 0,1 y 0,2 ) 1 2 ) 2
Zmiana układu współrzędnych
Zmiana układu współrzędnych
Zmiana układu współrzędnych
Zmiana układu współrzędnych
Zmiana układu współrzędnych Transformacja do lokalnego układu współrzędnych platformy nr 2 związanego ze środkiem okręgu opisanego na obrysie jej korpusu. { xl (t) = x 1 (t) x 2 (t) y L (t) = y 1 (t) y 2 (t) { vx,l (t) = v x,1 (t) v x,2 (t) v y,l (t) = v y,1 (t) v y,2 (t)
Zmiana układu współrzędnych Transformacja do lokalnego układu współrzędnych platformy nr 2 związanego ze środkiem okręgu opisanego na obrysie jej korpusu. { xl (t) = x 1 (t) x 2 (t) y L (t) = y 1 (t) y 2 (t) { vx,l (t) = v x,1 (t) v x,2 (t) v y,l (t) = v y,1 (t) v y,2 (t) Dzięki zastosowanej transformacji rozwiązanie problemu znacznie się upraszcza. Nie trzeba liczyć pochodnej, gdyż w tym przypadku problem jest natury geometrycznej.
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych.
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych.
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych.
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych.
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych. d = r sin α
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych. d = r sin α d = r sin α = r(e r e V ) z = (r e V ) z = (r V L V L ) z
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych. d = r sin α d = r sin α = r(e r e V ) z = (r e V ) z = (r V L V L ) z
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych. d = r sin α d = r sin α = r(e r e V ) z = (r e V ) z = (r V L V L ) z
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych. d = r sin α d = r sin α = r(e r e V ) z = (r e V ) z = (r V L V L ) z
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych. d = r sin α d = r sin α = r(e r e V ) z = (r e V ) z = (r V L V L ) z
Rozwiązanie w układzie lokalnym W lokalnym układzie współrzędnych jednej z platform problem sprowadza się do wyznaczenia odległości prostej od początku układu współrzędnych. d = r sin α d = r sin α = r(e r e V ) z = (r e V ) z = (r V L V L ) z d = (r V L) z V L
Porównanie rozwiązań d = ( (v x,1 v x,2 ) v x,12x 0,12 +v y,12 y 0,12 v 2 x,12 +v 2 y,12 ( + (v y,1 v y,2 ) v x,12x 0,12 +v y,12 y 0,12 vx,12 2 +v y,12 2 ) 2 + (x 0,1 x 0,2 ) + (y 0,1 y 0,2 ) 1 2 ) 2 d = (r V L) z V L
Plan prezentacji Języki modelowania 1 Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 2 3 Definicje klas Definicja metody sprawdzania kolizji
Etapy osiągania rozwiązania Analiza Projektowanie Konstrukcja
Etapy osiągania rozwiązania Analiza Projektowanie jest odwzorowaniem modelu koncepcyjnego na model implementacji. Konstrukcja
Określenie przypadków użycia Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy.
Określenie przypadków użycia Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Stworzona procedura będzie wykorzystywana w module detekcji kolizji oraz module planowania trajektrorii.
Diagram przypadków użycia Diagram przypadków użycia służy do obrazowania zachowania systemu, podsystemu lub klasy w taki sposób, żeby użytkownicy mogli zrozumieć, jak z tego bytu korzystać, a programiści mogli go zaimplementować.
Diagram przypadków użycia
Diagram przypadków użycia
Diagram przypadków użycia
Diagram przypadków użycia
Diagram przypadków użycia
Diagram przypadków użycia
Diagram przypadków użycia
Diagram przypadków użycia
Diagram czynności Języki modelowania Diagram czynności modeluje dynamiczne aspekty systemu. Demonstrują przepływ sterowania od operacji do operacji.
Diagram czynności Języki modelowania
Diagram czynności Języki modelowania
Diagram czynności Języki modelowania
Diagram czynności Języki modelowania
Diagram czynności Języki modelowania
Diagram czynności Języki modelowania
Diagram czynności Języki modelowania
Diagram czynności Języki modelowania
Diagram klas Języki modelowania Diagram klas służy do obrazowania statycznych aspektów systemu. Bierze się w nim pod uwagę wymagania funkcjonalne (usługi), jakie system powinien udostępniać swoim użytkownikom.
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy.
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: Własności: Operacje:
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) Własności: Operacje:
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) Własności: ruch położenie rozmiar Operacje:
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) Własności: ruch położenie rozmiar Operacje:
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) Własności: ruch położenie rozmiar Operacje:
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) Własności: ruch położenie rozmiar Operacje:
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) Własności: ruch położenie rozmiar Operacje:
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) Własności: ruch położenie rozmiar Operacje: sprawdzenie kolizyjności
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) Własności: ruch położenie rozmiar Operacje: sprawdzenie kolizyjności wyznaczanie odległości
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) (Po rozwiązaniu analitcznym) Dodatkowe rzeczowniki: wektor Własności: ruch położenie rozmiar Operacje: sprawdzenie kolizyjności wyznaczanie odległości
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) (Po rozwiązaniu analitcznym) Dodatkowe rzeczowniki: wektor Własności: ruch położenie rozmiar Operacje: sprawdzenie kolizyjności wyznaczanie odległości
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) (Po rozwiązaniu analitcznym) Dodatkowe rzeczowniki: wektor Własności: ruch położenie rozmiar Operacje: sprawdzenie kolizyjności wyznaczanie odległości (Po rozwiązaniu analitycznym) Dodatkowe operacje: odejmowanie wektorów iloczyn skalarny iloczyn wektorowy
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) (Po rozwiązaniu analitcznym) Dodatkowe rzeczowniki: wektor Własności: ruch położenie rozmiar Operacje: sprawdzenie kolizyjności wyznaczanie odległości (Po rozwiązaniu analitycznym) Dodatkowe operacje: odejmowanie wektorów iloczyn skalarny iloczyn wektorowy
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) (Po rozwiązaniu analitcznym) Dodatkowe rzeczowniki: wektor Własności: ruch położenie rozmiar Operacje: sprawdzenie kolizyjności wyznaczanie odległości (Po rozwiązaniu analitycznym) Dodatkowe operacje: odejmowanie wektorów iloczyn skalarny iloczyn wektorowy
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) (Po rozwiązaniu analitcznym) Dodatkowe rzeczowniki: wektor Własności: ruch położenie rozmiar Operacje: sprawdzenie kolizyjności wyznaczanie odległości (Po rozwiązaniu analitycznym) Dodatkowe operacje: odejmowanie wektorów iloczyn skalarny iloczyn wektorowy
Diagram klas Języki modelowania Należy zaimplementować procedurę obliczeniową umożliwiającą stwierdzenie, czy dla dwóch platform mobilnych poruszających się wzdłuż prostej ruchem jednostajnym zachodzi kolizja lub w jakiej miną się odległości. Zakładamy, że kolizja zachodzi jeśli jakaś przeszkoda znajdzie się w obrębie okręgu opisanego na rzucie pionowym korpusu platformy. Kluczowe rzeczowniki: platforma (mobilna) (Po rozwiązaniu analitcznym) Dodatkowe rzeczowniki: wektor Własności: ruch położenie rozmiar Operacje: sprawdzenie kolizyjności wyznaczanie odległości (Po rozwiązaniu analitycznym) Dodatkowe operacje: odejmowanie wektorów iloczyn skalarny iloczyn wektorowy
Diagram klas Języki modelowania
Diagram klas Języki modelowania
Diagram klas Języki modelowania
Diagram klas Języki modelowania
Diagram klas Języki modelowania
Diagram klas Języki modelowania
Diagram klas Języki modelowania
Diagram klas Języki modelowania
Etapy osiągania rozwiązania Definicje klas Definicja metody sprawdzania kolizji Analiza Projektowanie Konstrukcja
Etapy osiągania rozwiązania Definicje klas Definicja metody sprawdzania kolizji Analiza Projektowanie Konstrukcja jest odwzorowaniem modelu implementacji na działający system.
Plan prezentacji Języki modelowania Definicje klas Definicja metody sprawdzania kolizji 1 Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 2 3 Definicje klas Definicja metody sprawdzania kolizji
Definicje klasy Wektor Definicje klas Definicja metody sprawdzania kolizji class Wektor { //.......................................................... public: float x, y; Wektor operator ( Wektor ) const ; float operator ( const Wektor &V ) const { return x V.y y V.x; } float operator & ( const Wektor &V ) const { return x V.x + y V.y; } }; //........................................................................ Wektor Wektor::operator ( Wektor W ) const { W.x = x W.x; W.y = y W.y; } return W;
Definicje klasy Wektor Definicje klas Definicja metody sprawdzania kolizji class Wektor { //.......................................................... public: float x, y; Wektor operator ( Wektor ) const ; float operator ( const Wektor &V ) const { return x V.y y V.x; } float operator & ( const Wektor &V ) const { return x V.x + y V.y; } }; //........................................................................ Wektor Wektor::operator ( Wektor W ) const { W.x = x W.x; W.y = y W.y; } return W;
Definicje klasy Wektor Definicje klas Definicja metody sprawdzania kolizji class Wektor { //.......................................................... public: float x, y; Wektor operator ( Wektor ) const ; float operator ( const Wektor &V ) const { return x V.y y V.x; } float operator & ( const Wektor &V ) const { return x V.x + y V.y; } }; //........................................................................ Wektor Wektor::operator ( Wektor W ) const { W.x = x W.x; W.y = y W.y; } return W;
Definicje klasy Wektor Definicje klas Definicja metody sprawdzania kolizji class Wektor { //.......................................................... public: float x, y; Wektor operator ( Wektor ) const ; float operator ( const Wektor &V ) const { return x V.y y V.x; } float operator & ( const Wektor &V ) const { return x V.x + y V.y; } }; //........................................................................ Wektor Wektor::operator ( Wektor W ) const { W.x = x W.x; W.y = y W.y; } return W;
Plan prezentacji Języki modelowania Definicje klas Definicja metody sprawdzania kolizji 1 Języki modelowania UML geneza i przeznaczenie UML Diagramy Podstawowe oznaczenia diagram klas 2 3 Definicje klas Definicja metody sprawdzania kolizji
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L Wyliczenie prędkości platformy 1 w lokalnym układzie współrzędnych platformy nr 2.
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L Wyliczenie prędkości platformy 1 w lokalnym układzie współrzędnych platformy nr 2.
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L Wyliczenie współrzędnych wektora poprowadzone z platformy nr 2 do platformy nr 1.
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L Wyliczenie współrzędnych wektora poprowadzone z platformy nr 2 do platformy nr 1.
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L Wyliczenie najmniejszej odległości między środkami platform.
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L Wyliczenie najmniejszej odległości między środkami platform.
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L Porównanie rozmiarów sumy obrysów obu platform z odległością ich największego zbliżenia.
Definicja klasy PlatformaMobilna Definicje klas Definicja metody sprawdzania kolizji class PlatformaMobilna {//..................................................... Wektor Pozycja; Wektor Predkosc; float R; public: bool CzyKolizja( const PlatformaMobilna&, float& ) const ;... }; //............................................................................. bool PlatformaMobilna::CzyKolizja( const PlatformaMobilna &PM, float &d) const { Wektor V L = PM. Predkosc Predkosc; } Wektor r = PM. Pozycja Pozycja; d = fabs(r V L)/sqrt(V L & V L); return d < PM. R+ R; d = (r V L) z V L Porównanie rozmiarów sumy obrysów obu platform z odległością ich największego zbliżenia.