Podobna do poprzedniej, ale ciut bardziej skomplikowana.
Narysuj czworokąt. Jakikolwiek, może być nawet wklęsły.
Zbuduj kwadraty na jego wszystkich bokach.
Połącz liniami środki przeciwległych kwadratów.
Obie te linie zawsze będą do siebie prostopadłe, zawsze też będą równej długości.
Nie wierzysz? Sprawdź, przeciągając wierzchołki myszą:

Jeśli czytasz ten wpis przez RSS, skrypt raczej nie zadziała, więc musisz wejść bezpośrednio na stronę.
Zagadka brzmi oczywiście: dlaczego tak się dzieje?
Komentarze
Jeszcze nie wiem, ale bardzo śmieszne rezultaty twój aplecik daje, jak się czworokąta „przenicuje” (czyli zamieni miejscami dwa peciwległe wierzchołki).
Hipoteza zauważona „intuicyjnie”, na razie bez dowodu: środki kwadratów opisują podobny czworokąt… o dwa razy większym (albo jak „przenicowany” – mniejszym) polu?
Nie, to drugie to bzdura.
Bo ciągnąc za jeden bok kwadratu, ten, który jest prostopadły do tego, za który ciągnę skraca się dokładnie o tyle, ile rozciąga się ten, za który ciągnę :D W związku z tym czerwone linie zawsze będą miały kąt prosty i będą miały tę samą długość.
Hmm, zagadka wydawała mi się średnio trudna, a tu taki mały odzew… Powinienem rzucić podpowiedzią, czy jeszcze poczekać?
@Ejdzej
W sensie, że coś się wykrzacza, czy po prostu zabawnie wygląda?
@Lotta
Prosiłbym trochę jaśniej, bo nijak nie łapię, co masz na myśli.
Podpowiedź mile widziana :)
Podpowiadam: wektory. Wystarczy do złapania tropu?
W sensie: dla takiego samego czworokąta otrzymuje się inny skonstruowany czerwony + (a w przypadku kwadratu dostaje się: przekątne i czerwoną kropkę w środku). Gdzieś tam w algorytmie kolejność wierzchołków jest brana pod uwagę w konstrukcji.
No tak, ale to nie jest bug, tylko feature – kwadraty są zawsze budowane po tych samych stronach boków, więc jak przenicujesz, to lądują w środku. Notabene nawet wtedy warunek z czerwonymi liniami pozostaje spełniony.
Dobra, wyraźnie nikt nie ma pomysłu, jak się za to zabrać, więc już nie przeciągajmy – oto rozwiązanie:
Na dobry początek niech nasz czworokąt będzie kwadratem – to, że czerwone linie będą wtedy równe i prostopadłe, zauważy nawet ślepy humanista. Zobaczmy zatem, co się stanie, gdy poruszymy którymś wierzchołkiem.
Oznaczmy współrzędne kolejnych wierzchołków przez Ax, Ay, Bx, By itd. Współrzędne środka kwadratu opartego na boku AB możemy łatwo obliczyć korzystając z faktu, że leży on w połowie przekątnej, a przekątna to suma wektora AB i wektora doń prostopadłego. A zatem:
Ex = Ax + ((Bx – Ax) / 2) + ((Ay – By) / 2)
Ey = Ay + ((By – Ay) / 2) + ((Bx – Ax) / 2)
Analogicznie dla kwadratu opartego na boku BC:
Fx = Bx + ((Cx – Bx) / 2) + ((By – Cy) / 2)
Fy = By + ((Cy – By) / 2) + ((Cx – Bx) / 2)
Teraz przesuńmy wierzchołek B o wektor (x, y). Nowe położenia środków kwadratów będą następujące:
Ex2 = Ax + ((Bx + x – Ax) / 2) + ((Ay – By – y) / 2)
Ey2 = Ay + ((By + y – Ay) / 2) + ((Bx + x – Ax) / 2)
Fx2 = Bx + x + ((Cx – Bx – x) / 2) + ((By + y – Cy) / 2)
Fy2 = By + y + ((Cy – By – y) / 2) + ((Cx – Bx – x) / 2)
Odejmując stare współrzędne od nowych, otrzymujemy wektory przesunięć:
ΔEx = (x – y) / 2
ΔEy = (x + y) / 2
ΔFx = (x + y) / 2
ΔFy = (y – x) / 2
Jak nietrudno zauważyć, oba te wektory są równe i prostopadłe – a ściślej mówiąc, wektor ΔF zawsze będzie obrócony o 90 stopni zgodnie z ruchem wskazówek zegara w stosunku do ΔE. Tak samo jak czerwona linia kończąca się w punkcie F, do linii kończącej się w E.
Skoro więc do równych i prostopadłych linii dodajemy równe i prostopadłe wektory o odpowiednich zwrotach, to i wynikowe linie muszą być wobec siebie równe i prostopadłe. A ponieważ całe rozumowanie jest niezależne od wybranego wierzchołka i kształtu czworokąta, wymagając jedynie początkowej równości i prostopadłości czerwonych linii, to wniosek z tego prosty, że po każdym kolejnym przesunięciu któregokolwiek wierzchołka czerwone linie zawsze muszą pozostać równe i prostopadłe, choćby nie wiem jak kombinować.
CND