eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingkolizja prostokątówRe: kolizja prostokątów
  • Data: 2011-12-22 10:51:34
    Temat: Re: kolizja prostokątów
    Od: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 2011-12-22, Kicer <...@...c> wrote:
    > Stachu 'Dozzie' K. wrote:
    >
    >> On 2011-12-22, Kicer <...@...c> wrote:
    >>> niechę będzie że mam:
    >>>
    >>> +---+
    >>> | |
    >>> | |
    >>> | |
    >>> | |
    >>> | |
    >>> +---+
    >>>
    >>> +-----------------+
    >>> | |
    >>> +-----------------+
    >>
    >>>> 3. Upewniasz się, że xA1 < xB1.
    >>>> Chodzi o to, żeby wiedzieć, który prostokąt jest lewy, a który prawy.
    >>>
    >>> ten na dole jest prawy
    >>>
    >>>> 4. Jeśli to prawy prostokąt jest przesuwany, liczysz wektor przesunięcia
    >>>> równoległego do osi x między xA2 i xB1. Jeśli lewy prostokąt jest
    >>>> przesuwany, wektor ma przeciwny zwrot.
    >>>
    >>> no to wyszedł wektor o długości 0, bo odlegość na osi odciętych (x)
    >>> między prawym bokiem górnego a lewym bokiem dolnego == 0.
    >>
    >> Słusznie. I tyle, jak rozumiem, powinien wyjść.
    >
    > nie ;) przesuwając dolny po prostej przechodzącej przez środki prostokątów,
    > powinien się on przesunąć lekko w lewo.
    >
    >>
    >>>> 5. Obliczasz wektor przesunięcia wzdłuż osi y. Może być za pomocą
    >>>> proporcji. Możesz nawet sprawdzić, czy udało się tak przesunąć
    >>>> prostokąt, żeby dowolny bok poziomy jednego prostokąta znajdował się
    >>>> między bokami drugiego prostokąta (wystarczą dwie proste
    >>>> alternatywy).
    >>>
    >>> tu przyznam, że nie do konca rozumiem. Z proporcji miedzy czym a czym?
    >>
    >> Elementarna planimetria. Przesuwasz wzdłuż prostej przechodzącej przez
    >> środki, czyli o dwa wektory (równoległe do osi) składające się na wektor
    >> łączący środki prostokątów albo coś proporcjonalnego. Jeśli masz
    >> wyliczony wektor przesunięcia wzdłuż jednej osi, drugi się wylicza
    >> prosto.
    >
    > no dobra, pierwszy wyszedł mi 0 to drugi wyjdzie ile? 0?:>

    Założyłem (niesłusznie), że to boki pionowe mają się zetknąć. A policz
    teraz wariant dla boków poziomych i wyjaśnij, czemu uważasz że *to* nie
    zadziała?

    >>> Poświęciłem naprawdę sporo czasu na rozwiązanie tego problemu i uwierz
    >>> mi, wszelkie algorytmy wymyślane "od ręki" mają jakieś błędy dla
    >>> wymyślnych przypadków.
    >>
    >> Jeśli wystarczy ci, że dowolne boki się zetkną, to możesz policzyć dwa
    >> warianty i sprawdzić, przy którym prostokąty się rzeczywiście zetkną.
    >> Algorytm ten sam. Chyba że wynajdziesz inny problem.
    >>
    >
    > tego narazie nie skomentuję, bo ciągle są braki w punktach powyżej ;)

    Skomentuj, skomentuj. Bo algorytm wymaga _trywialnej_ poprawki w postaci
    właśnie tego: liczysz wektor dla wariantu, gdy prostokąty mają się
    zetknąć bokami pionowymi i dla wariantu z bokami poziomymi. Sprawdzasz,
    w którym wariancie prostokąty rzeczywiście się zetkną i ten wybierasz.

    Co to mówiłeś o swoim mnóstwie czasu spędzonym nad algorytmem?

    --
    Secunia non olet.
    Stanislaw Klekot

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: