Wyznaczenie kierunku obrotu odcinka.
-
- Użytkownik
- Posty: 4
- Rejestracja: 10 gru 2008, o 12:46
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
Wyznaczenie kierunku obrotu odcinka.
Piszę krótki program (niekomercyjny) który wspomaga rzutowanie powierzchni brył z przestrzeni trójwymiarowej do dwuwymiarowej. Program jest częścią większego pakietu to tworzenia grafiki. Natknąłem się na pewien problem, przy którym zacząłem kręcić się w kółko i potrzebuje pomocy. Z góry przepraszam, za ew. nieścisłość w nazewnictwie matematycznym ale od czasów szkolnych mam z matematyką bardzo mało wspólnego a nazewnictwo używane przez programistów i matematyków nie koniecznie musi być takie samo.
Mam następującą sytuację.
- 2 wymiarowy układ współrzędnych X,Y. Współrzędne 0,0 leżą w dolnym lewym rogu a 1,1 w górnym prawym.
- dwa odcinki: S i D
-- odcinki mają jeden punkt wspólny, początek lub koniec ( nie przecinają się ).
-- są nachylone do siebie pod kontem od 0 (wykluczając 0) do 90 stopni
-- znane są współrzędne wszystkich punków tych odcinków jak i kąt pomiędzy nimi - kąt wyznaczam z 'wektorów tych odcinków'.
-- odcinki mają różną długość.
Innymi słowy: dane są dwa odcinki których graficzna reprezentacja ma wygląd litery 'V' a w skrajnym przypadku 'L' w różnym położeniu.
Moim celem jest, obrócenie odcinka D (konkretnego odcinka), wokół punktu wspólnego dla dwóch odcinków, tak żeby po obrocie przylegał do odcinka S. Czyli o obróceniu go o kąt który jest pomiędzy odcinkami wokół punku wspólnego.
Problem który mam to w jaki sposób - matematycznie tj. na podstawie ww. danych - określić w którym kierunki tj. czy zgodnie do ruchu wskazówek zegara czy w przeciwną stronę, należy obrócić odcinek tak żeby przylegał do drugiego. Oprogramowanie bazowe dokonuje obrotu jednak wymaga argumentu który poprzez znak określi kierunek tego obrotu.
Czy mógłby mi pomów, mówiąc chociażby w gdzie szukać rozwiązania?
Mam następującą sytuację.
- 2 wymiarowy układ współrzędnych X,Y. Współrzędne 0,0 leżą w dolnym lewym rogu a 1,1 w górnym prawym.
- dwa odcinki: S i D
-- odcinki mają jeden punkt wspólny, początek lub koniec ( nie przecinają się ).
-- są nachylone do siebie pod kontem od 0 (wykluczając 0) do 90 stopni
-- znane są współrzędne wszystkich punków tych odcinków jak i kąt pomiędzy nimi - kąt wyznaczam z 'wektorów tych odcinków'.
-- odcinki mają różną długość.
Innymi słowy: dane są dwa odcinki których graficzna reprezentacja ma wygląd litery 'V' a w skrajnym przypadku 'L' w różnym położeniu.
Moim celem jest, obrócenie odcinka D (konkretnego odcinka), wokół punktu wspólnego dla dwóch odcinków, tak żeby po obrocie przylegał do odcinka S. Czyli o obróceniu go o kąt który jest pomiędzy odcinkami wokół punku wspólnego.
Problem który mam to w jaki sposób - matematycznie tj. na podstawie ww. danych - określić w którym kierunki tj. czy zgodnie do ruchu wskazówek zegara czy w przeciwną stronę, należy obrócić odcinek tak żeby przylegał do drugiego. Oprogramowanie bazowe dokonuje obrotu jednak wymaga argumentu który poprzez znak określi kierunek tego obrotu.
Czy mógłby mi pomów, mówiąc chociażby w gdzie szukać rozwiązania?
-
- Użytkownik
- Posty: 7330
- Rejestracja: 14 lut 2008, o 08:31
- Płeć: Mężczyzna
- Lokalizacja: Z Bielskia-Białej
- Podziękował: 6 razy
- Pomógł: 961 razy
-
- Użytkownik
- Posty: 4
- Rejestracja: 10 gru 2008, o 12:46
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
Wyznaczenie kierunku obrotu odcinka.
W jaki sposób wyznaczyć kąt takiego obrotu?
BTW: Dla uproszczenia, być może niepotrzebnie, nie wspomniałem że odcinki są częścią wieloboków - jednak z tego co widzę przy obrocie w tą czy inną stronę nie powinno mieć to znaczenia.
BTW: Dla uproszczenia, być może niepotrzebnie, nie wspomniałem że odcinki są częścią wieloboków - jednak z tego co widzę przy obrocie w tą czy inną stronę nie powinno mieć to znaczenia.
-
- Użytkownik
- Posty: 7330
- Rejestracja: 14 lut 2008, o 08:31
- Płeć: Mężczyzna
- Lokalizacja: Z Bielskia-Białej
- Podziękował: 6 razy
- Pomógł: 961 razy
-
- Użytkownik
- Posty: 4
- Rejestracja: 10 gru 2008, o 12:46
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
Wyznaczenie kierunku obrotu odcinka.
Rozumiem, tylko że mi chodzi o obrót konkretnego odcikA tak żeby przylegał do drugiego a nie o obrót odcinkÓW. Celem nie jest obrócenie jednego albo drugiego odcinka tak żeby w końcu oba przylegały do siebie.
W przypadku obrotu w dwie strony - niezgodnie jak mówisz w umową: konkretny odcinek musi być obrócony o kont A albo -A. Pytanie o który?
W przypadku obrotu w jedną stronę - zgodnie z umową - konkretny odcinek musi być obrócony o kont A albo o kont 360-A. Pytanie o który?
Niezależnie od podejścia, problem pozostaje ten sam. W jaki sposób wyliczyć wskaźnik który będzie decydował jaki jest kąt obrotu. Chodzi i o ustalenie drogi w jaki sposób ten 'wskaźnik' wyliczyć a nie pokazać go na rysunku. Nie jestem pewien czy post jest w odpowiedniej sekcji na forum.
Problem rozwiązałem sobie w ten sposób, że obracam odcinek o 360-A stopi i sprawdzam czy wektory obu odcinków po obrocie są równoległe. Jeżeli nie są to obracam odcinek o kat między odcinkami po obrocie. Rozwiązanie akceptowalne bo działa ale na pewno nie jest idealne. Gdyby odcinki miały tą samą długość można by obrócić jeden punk, który nie jest punktem wspólnym i sprawdzić czy jego współrzędne są równe punkowi na drugim odcinku ale po pierwsze odcinki nie są równe a po drugie może to powodować dodatkowe problemy - np. błędy zaokrągleń.
W przypadku obrotu w dwie strony - niezgodnie jak mówisz w umową: konkretny odcinek musi być obrócony o kont A albo -A. Pytanie o który?
W przypadku obrotu w jedną stronę - zgodnie z umową - konkretny odcinek musi być obrócony o kont A albo o kont 360-A. Pytanie o który?
Niezależnie od podejścia, problem pozostaje ten sam. W jaki sposób wyliczyć wskaźnik który będzie decydował jaki jest kąt obrotu. Chodzi i o ustalenie drogi w jaki sposób ten 'wskaźnik' wyliczyć a nie pokazać go na rysunku. Nie jestem pewien czy post jest w odpowiedniej sekcji na forum.
Problem rozwiązałem sobie w ten sposób, że obracam odcinek o 360-A stopi i sprawdzam czy wektory obu odcinków po obrocie są równoległe. Jeżeli nie są to obracam odcinek o kat między odcinkami po obrocie. Rozwiązanie akceptowalne bo działa ale na pewno nie jest idealne. Gdyby odcinki miały tą samą długość można by obrócić jeden punk, który nie jest punktem wspólnym i sprawdzić czy jego współrzędne są równe punkowi na drugim odcinku ale po pierwsze odcinki nie są równe a po drugie może to powodować dodatkowe problemy - np. błędy zaokrągleń.
-
- Użytkownik
- Posty: 7330
- Rejestracja: 14 lut 2008, o 08:31
- Płeć: Mężczyzna
- Lokalizacja: Z Bielskia-Białej
- Podziękował: 6 razy
- Pomógł: 961 razy
-
- Użytkownik
- Posty: 4
- Rejestracja: 10 gru 2008, o 12:46
- Płeć: Mężczyzna
- Lokalizacja: Warszawa
Wyznaczenie kierunku obrotu odcinka.
Dokładnie, tak ale oczywiście chodzi mi o wzór w jaki sposób go obliczyć albo chociażby wskazanie metody.
Wyznaczenie kierunku obrotu odcinka.
zadanie rozwiążesz jeśli za odcinek wektor weźmieszMagnetofon pisze:Dokładnie, tak ale oczywiście chodzi mi o wzór w jaki sposób go obliczyć albo chociażby wskazanie metody.
przesuniesz (translacja) o wektor który wyznaczysz
biorąc różnicę wektorów, którymi teraz są te odcinki.
itd itd tak jak to robisz skończone