eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingkolizja prostokątówRe: kolizja prostokątów
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!feeder.erje.net!news.mixmin.net!aioe.org!.POSTED!not-for-mail
    From: "Stachu 'Dozzie' K." <d...@g...eat.some.screws.spammer.invalid>
    Newsgroups: pl.comp.programming
    Subject: Re: kolizja prostokątów
    Date: Thu, 22 Dec 2011 10:51:34 +0000 (UTC)
    Organization: Aioe.org NNTP Server
    Lines: 77
    Message-ID: <s...@j...net>
    References: <jcs40l$bt7$1@kushnir.sileman> <jcs55a$o1h$2@inews.gazeta.pl>
    <jcti3f$p89$1@kushnir.sileman> <s...@j...net>
    <jcupv2$563$1@kushnir.sileman> <s...@j...net>
    <jcuvd1$2eo$1@kushnir.sileman>
    NNTP-Posting-Host: 32kR2H3mw0v3HL1sSnS9/A.user.speranza.aioe.org
    Mime-Version: 1.0
    Content-Type: text/plain; charset=iso-8859-2
    Content-Transfer-Encoding: 8bit
    X-Complaints-To: a...@a...org
    User-Agent: slrn/pre0.9.9-111 (Linux)
    X-Notice: Filtered by postfilter v. 0.8.2
    Xref: news-archive.icm.edu.pl pl.comp.programming:194478
    [ ukryj 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: