Skalowanie obracanego prostokąta. Prostokąt na prostokącie.

Wielokąty (n>3). Okręgi. Inne figury płaskie. Zadania i twierdzenia z nimi związane. Geometria rzutowa na płaszczyżnie.
revv83
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 21 wrz 2012, o 23:35
Płeć: Mężczyzna
Lokalizacja: Warszawa

Skalowanie obracanego prostokąta. Prostokąt na prostokącie.

Post autor: revv83 »

Witam wszystkich.

W zasadzie jestem tu pierwszy raz i piszę z nadzieją, że ktoś podpowie mi jak rozwiązać pewien irytujący problem.
Tworzę aplikację, w której potrzebuję dopasowywać dane zdjęcie do ustalonego, stałego kadru o wymiarach AxB.
Szkopuł tkwi w tym, iż w aplikacji chciałbym obracać dane zdjęcie względem środka kadru i jednocześnie skalować je tak, aby zawsze wypełniało obszar całego kadru AxB (pewne zbędne fragmenty zdjęcia znalazłyby się wówczas poza kadrem). W praktyce wyglądałoby to tak, że dla pewnych wartości kąta obrotu zdjęcie powiększałoby się lub zmniejszało, po to by ustalony kadr zawsze był wypełniony zdjęciem.

Załączam zdjęcia, aby zobrazować problem.


1. Zdefiniowany kadr o wymiarach AxB znajduje się na środku ekranu. Zielony obszar to rzeczywiste wymiary przykładowego zdjęcia.
AU
AU
ZT0tJ.png (3.83 KiB) Przejrzano 130 razy


2. Zdjęcie przeskalowane do kadru.
AU
AU
mMhWy.png (3.84 KiB) Przejrzano 130 razy


3. Tak wygląda zdjęcie obrócone o 5 stopni. Widać, że cały kadr nie jest wypełniony (widać białe tło).
AU
AU
uloir.png (13.85 KiB) Przejrzano 130 razy


4. I w tym miejscu mam problem. Taki efekt chciałbym uzyskać. Zdjęcie wypełnia tylko niezbędny obszar kadru (reszta, możliwie jak najmniej - zostanie ścięta).
AU
AU
2S2T5.png (15.05 KiB) Przejrzano 130 razy

Otóz, jak dla tego przypadku wyprowadzić wzór na procentową skalę powiększenia zdjęcia względem jego rzeczywistych wymiarów posiadając:
- rzeczywiste wymiary zdjęcia
- kąt obrotu, np. 5 stopni
- wymiary kadru AxB

Dla niektórych kątów, np. 30 stopni udało mi się to policzyć z funkcji trygonometrycznych. Przy kącie 5 stopni sytuacja wygląda nieco inaczej, są inne warunki geometryczne (nie tworzą się trójkąty, których jednym z boków jest wymiar A lub B), nie mogę sobie z tym poradzić. Chciałbym aby wzór był uniwersalny, tak aby można było policzyć każdy kąt, ew. kąty z pierwszej ćwiartki i jakoś potem je zredukować do pozostałych ćwiartek. Nie jestem specjalistą w tego typu obliczeniach, dlatego przepraszam za łopatologiczne tłumaczenie i z góry dziękuję za pomoc.
Awatar użytkownika
steal
Użytkownik
Użytkownik
Posty: 1043
Rejestracja: 7 lut 2007, o 18:35
Płeć: Mężczyzna
Lokalizacja: Białystok|Warszawa
Podziękował: 6 razy
Pomógł: 160 razy

Skalowanie obracanego prostokąta. Prostokąt na prostokącie.

Post autor: steal »

Ja nie widzę problemu z rozpisaniem tego z odpowiedniego trójkąta. Jeżeli dłuższy bok zdjęcia ma oryginalną długość \(\displaystyle{ m}\) to wzór na skalę wygląda tak:

\(\displaystyle{ k = \frac{\sqrt{A^2+B^2}\cdot \cos(\frac{\pi}{4}-\varphi)}{m}}\)

A więc zdjęcie należy przeskalować \(\displaystyle{ 100\cdot k \%}\)

PS. Bardzo dobrze opisałeś problem, gdyby wszyscy tak robili!
revv83
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 21 wrz 2012, o 23:35
Płeć: Mężczyzna
Lokalizacja: Warszawa

Skalowanie obracanego prostokąta. Prostokąt na prostokącie.

Post autor: revv83 »

Serdecznie dziękuję za pomoc Co prawda skorzystałem już z rozwiązania na tym forum: ... rostokata/
Jednak mimo wszystko jestem wdzięczny za zainteresowanie tematem. Pozdrawiam
ODPOWIEDZ