Przeanalizowałem zagadnienie raz jeszcze i wybór wektorów wydaje się prostszy, zwłaszcza jak mamy łatwy dostęp do wierzchołków figur za pomocą metod.
TEORIA
Mamy dwie figury, pięciokąt oraz trójkąt (zobacz rysunek poniżej). Wybieramy jeden z boków, ja wybrałem odcinek |AB|. Obliczamy wektor o początku A i końcu B, oraz liczymy dla niego wektor normalny* N (zielony) zgodnie z tym, co napisałeś w pierwszej wiadomości. Wektor N zaczepiamy w dowolnym punkcie. Ja wybrałem punkt B, równie dobrze mógłby to być punkt A lub dowolny inny. Ważne jest, by ten punkt łatwo dało się wyznaczyć, ponieważ względem niego będziemy wyznaczać pozostałe wektory. Tak więc nasz układ jest zaczepiony w punkcie B. Teraz trzeba by zrzutować każdy z wierzchołków obu figur na prostą, która pokrywa się z wektorem N. Z oczywistych względów nie będziemy rzutować punktów A oraz B, pozostaje więc 6 wierzchołków: C, D, E, F, G, H.
W takim razie tworzymy wektory zaczepione w punkcie B. Na rysunku są dwa takie wektory BE oraz BF (czerwone). Licząc iloczyn skalarny dla dwóch par wektorów:
- wektor normalny N oraz BE
- wektor normalny N oraz BF
i dzieląc je przez długość wektora N, otrzymamy długości* odcinków |BE'| oraz |BF'| (niebieska ciągła i przerywana linia). Widzimy więc, że oba odcinki się pokrywają, co oznacza że nie jesteśmy w stanie stwierdzić, czy figury się przecinają, czy są odseparowane.
CO DALEJ?
Skoro oba zrzutowane odcinki nie są odseparowane, to taką samą procedurę powtarzamy dla kolejnego boku pięciokąta, np. BC. Należy również pamiętać o tym, że nawet jak sprawdzimy całą figurę i nie dostaniemy odseparowanych odcinków, to musimy zbadać w ten sam sposób drugą figurę.
PROBLEMY
W tekście znajdują się dwie *, które wskazują miejsca, w których pojawią się problemy. Pierwszym z nich jest fakt, że zwrot wektora normalnego N może być przeciwny, co przełoży się na znak iloczynu skalarnego. Drugi to fakt, że zrzutowane odcinki, wynikające z iloczynu skalarnego, mogą mieć wartości ujemne. Oczywiście iloczyn skalarny to nie jest długość zrzutowanego odcinka. Jest nią wartość bezwzględna z iloczynu skalarnego, podzielona przez długość wektora N. Oba te zagadnienia będą mieć wpływ na wartości min, max. Spróbuj przemyśleć rozwiązanie tego problemu, który jest także wspomniany na tej stronie.