Obliczanie punktu zderzenia figur płaskich

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2789 razy

Kawał czasu temu (cokolwiek to oznacza) napisałem program, który w wymyślony od podstaw przeze mnie sposób oblicza punkt zderzenia dwóch obiektów płaskich. Cały algorytm powstał w oparciu o obliczenie punktu zderzenia dwóch punktów P1 oraz P2, które poruszają się z prędkościami określonymi wektorami V1 oraz V2. Zanim jednak uchylę rąbka tajemnicy dotyczącego tego algorytmu, opiszę pokrótce sam program, którego screen można obejrzeć na rysunku 1.

Screen programu zderzenia.
Rys. 1
Screen programu zderzenia.

Na powyższym rysunku znajduję się dwa odcinki, które się przemieszczają z położenia początkowego do punktu zderzenia, oraz dwie figury płaskie również przemieszczające się do punktu zderzenia z pozycji początkowej. W programie wyświetlają się również dwa nieruchome odcinki i figury płaskie, które określają położenie początkowe obiektów zderzających się. Poniżej znajduje się krótka wideo prezentacja programu.

Jak widać na załączonej wideo prezentacji, narysowane na czerwono linie to wektory prędkości, które można zmieniać wedle uznania. Położenie końców odcinków również można zmieniać a wszystko to poprzez naciśnięcie w pobliżu końca odcinka lewego przycisku myszy i przesunięciu kursora myszy.

Wyznaczenie punktu zderzenia dla dwóch punktów P1 oraz P2 można dokonać za pomocą następującego równania, które jest prawdziwe, gdy punkty się zderzą:

Gdy dla wyliczonej wartości t pierwsza równość jest spełniona, to punkty się zderzą z sobą. W ten sposób można stwierdzić, czy dwa punkty się zderzą czy nie, kiedy się zderzą i gdzie się zderzą również. Zasada ta sprawdza się także dla trójwymiarowych współrzędnych kartezjańskich. Może się to wydawać dziwne lecz zależność [1] jest podstawą do stworzenia algorytmu obliczającego punkt zderzenia odcinka z punktem, a następnie odcinka z odcinkiem by w końcu umożliwić obliczenie punktu zderzenia wielokąta z wielokątem, punktem lub odcinkiem.

Zależność [1] jest wszystkim co tak naprawdę jest potrzebne do obliczania kolizji, ale aby zrozumieć jak go wykorzystać i jak jest to możliwe, trzeba to rozrysować i zrozumieć, jak to działa, a tę przyjemność proszę Państwa zostawiam Wam, cobyście się nie nudzili i trochę nad tym pogłowili. Pytanie brzmi: jak wykorzystać zależność [1] do obliczenia punktu zderzenia linii z punktem (reszta będzie już oczywista).

Propozycje książek
tytuł: C++  Zbiór zadań z rozwiązaniami autor: Tomasz Jaśniewski

Tytuł:

C++ Zbiór zadań z rozwiązaniami

Autor:

Tomasz Jaśniewski

tytuł: Mikrokontrolery dla hobbystów. Projekty DIY w języku C i C++ autor: Miguel Angel Garcia-Ruiz, Pedro Cesar Santana Mancilla

Tytuł:

Mikrokontrolery dla hobbystów. Projekty DIY w języku C i C++

Autor:

Miguel Angel Garcia-Ruiz, Pedro Cesar Santana Mancilla

tytuł: Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów autor: Adrian Ostrowski, Piotr Gaczkowski

Tytuł:

Architektura oprogramowania bez tajemnic. Wykorzystaj język C++ do tworzenia wydajnych aplikacji i systemów

Autor:

Adrian Ostrowski, Piotr Gaczkowski

tytuł: Wprowadzenie do C++ autor: Michał Matlak

Tytuł:

Wprowadzenie do C++

Autor:

Michał Matlak

tytuł: Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet) autor: Jerzy Grębosz

Tytuł:

Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione (komplet)

Autor:

Jerzy Grębosz

tytuł: Programowanie wieloplatformowe z C++ i wxWidgets 3 autor: Bartosz W. Warzocha

Tytuł:

Programowanie wieloplatformowe z C++ i wxWidgets 3

Autor:

Bartosz W. Warzocha

tytuł: Język C++ i przetwarzanie współbieżne w akcji. Wydanie II autor: Anthony Williams

Tytuł:

Język C++ i przetwarzanie współbieżne w akcji. Wydanie II

Autor:

Anthony Williams

tytuł: C++ dla bystrzaków. Wydanie VII autor: Stephen R. Davis

Tytuł:

C++ dla bystrzaków. Wydanie VII

Autor:

Stephen R. Davis

tytuł: Tablice informatyczne. Podstawy C++ autor: Radosław Sokół

Tytuł:

Tablice informatyczne. Podstawy C++

Autor:

Radosław Sokół

tytuł: Opus magnum C++11. Programowanie w języku C++ (komplet) autor: Jerzy Grębosz

Tytuł:

Opus magnum C++11. Programowanie w języku C++ (komplet)

Autor:

Jerzy Grębosz

W związku z tym, że firma Helion nie wywiązuje się z swoich zobowiązań naliczania prowizji za każdą zakupioną książkę a kontakt z ową frmą jest nie możliwy autor strony zmuszony został do zablokowania linkowania książek. Za wszelkie niedogodności z tym związane z góry przepraszam i obiecuję włączenie linkowania gdy tylko sprawa zostanie wyjaśniona

Załączniki:

Program pokazujący zasadę działania algorytmu wyznaczającego punkt zderzenia dwóch obiektów płaskich