eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingkolizja prostokątówRe: kolizja prostokątów
  • Data: 2011-12-22 08:32:36
    Temat: Re: kolizja prostokątów
    Od: Kicer <...@...c> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Stachu 'Dozzie' K. wrote:

    > On 2011-12-21, Kicer <...@...c> wrote:
    >> Paweł Kierski wrote:
    >>
    >>>
    >>> Czy prostokąty mają boki równoległe do siebie (lub może lepiej - do osi
    >>> współrzędnych)?
    >>>
    >>
    >> tak, mają.
    >
    > To algorytm ustalania jakie powinno być przesunięcie jest prosty.
    >
    > 1. Prostokąty A i B mają współrzędne:
    > * xA1, xA2, yA1, yA2
    > * xB1, xB2, yB1, yB2


    niechę będzie że mam:

    +---+
    | |
    | |
    | |
    | |
    | |
    +---+

    +-----------------+
    | |
    +-----------------+

    > 2. Upewniasz się, że xA1 < xA2, xB1 < xB2, yA1 < yA2, yB1 < yB2.
    > Chodzi o to, żeby mieć lewy bok i dolny bok zawsze we współrzędnej *1

    upewnione ;)

    > 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.

    > 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?
    Jeśli chodzi o jakieś proporcje związane z wektorem poziomym to i tak wyszło
    0, wiec nie ma co liczyć.

    > Nie wiem czemu uważasz, że to jakieś czary. Co najwyżej, jak ktoś
    > w innej odpowiedzi zauważył, wynik z punktu piątego może nie być liczbą
    > całkowitą.


    rozważ taki przypadek:

    +----------+
    | |
    +----------+

    +----------+
    | |
    +----------+

    wg punktu 3 dolny prostokąt jest prawy

    wg punktu 4 wyjdzie mi wektor nakazujący przesunąć dolny prostokąt w prawo i
    to o spory kawałek, bo liczę wektor o współrzędnej x = xB1 - xA2 co daje
    niespodziewane liczbę ujemną.

    Nie ważne co mówią kolejne punkty, bo i tak algorytm już poszedł w maliny,
    bo oczekiwane przesunięcie (po prostej między środkami prostokątów) to 1 w
    lewo i 1 w górę.

    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.

    pozdrawiam

    --
    Michał Walenciak
    gmail.com kicer86
    http://kicer.sileman.net.pl
    gg: 3729519

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: