Witam,
Zacząłem grać w grę z tytułu tematu i napotkałem problem polegający na znalezieniu punktu w przestrzeni.
Gra głównie polega na sterowaniu robotami ręcznie lub pisaniu programów w języku bardzo zbliżonym do c++, dostępne są w nim potęgi pierwiastki oraz funkcje sin,cos,itd.
Mam do dyspozycji programowalnego robota który może się swobodnie przemieszczać. Za pomocą komend mogę określić jego położenie R(x,y,z) jak i położenie mojego przeciwnika pająka P(x,y,z) którego muszę zniszczyć, inną komendą jestem w stanie zmierzyć odległość między dowolnymi dwoma punktami. Aby wykonać misję muszę się zbliżyć na bezpieczną odległość powiedzmy 5m od celu.
szukam funkcji która na podstawie dwóch danych punktów P oraz R jest w stanie wypluć trzeci znajdujący się 5m od punktu P oraz znajdujący się na linii PR.
Program musi działać bez względu na położenie robota i pająka więc stałe wartości odpadają.
Pozdrawiam
Gra Colobot pozycja strzelecka
- Dasio11
- Moderator
- Posty: 10235
- Rejestracja: 21 kwie 2009, o 19:04
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Podziękował: 40 razy
- Pomógł: 2365 razy
Re: Gra Colobot pozycja strzelecka
Są dwa takie punkty: \(\displaystyle{ p \pm \frac{5}{\|p-r\|} (p-r)}\), gdzie \(\displaystyle{ \| p \|}\) to odległość punktu \(\displaystyle{ p}\) od zera.
W postaci bez notacji wektorowej:
\(\displaystyle{ \left( x_p \pm \frac{5}{d} \cdot (x_p-x_r), y_p \pm \frac{5}{d} \cdot (y_p-y_r), z_p \pm \frac{5}{d} \cdot (z_p-z_r) \right)}\)
gdzie \(\displaystyle{ P = (p_x, p_y, p_z), R = (r_x, r_y, r_z)}\) i \(\displaystyle{ d = \sqrt{(x_p-x_r)^2 + (y_p-y_r)^2 + (z_p-z_r)^2}}\).