współrzędne końca odcinka obracanego o dany kąt

Obiekty i przekształcenia geometryczne, opisane za pomocą układu (nie zawsze prostokątnego) współrzędnych.
krokodylek
Użytkownik
Użytkownik
Posty: 30
Rejestracja: 15 wrz 2011, o 13:20
Płeć: Mężczyzna
Lokalizacja: :)
Podziękował: 8 razy

współrzędne końca odcinka obracanego o dany kąt

Post autor: krokodylek »

witam
piszę program, natrafiłem na problem
szukałem po forum, znalazłem nawet kilka podobnych tematów, ale żaden ze wzorów nie działał mi dobrze
tu link do programu

Kod: Zaznacz cały

http://jsfiddle.net/VK2ez/12/


tu wzór jakiego próbowałem użyć, niestety wskazuje złe wartości:

\(\displaystyle{ x3 = ((x1-x2)*cos( \alpha ) - (y1-y2)*sin( \alpha) + x2);}\)

tu dane jakie były podstawiane
\(\displaystyle{ x1= 160;}\)
\(\displaystyle{ x2 = 160;}\)
\(\displaystyle{ y1 = 270;}\)
\(\displaystyle{ y2 = 160;}\)

jakieś rady?
pozdrawiam
Awatar użytkownika
hubertwojtowicz
Użytkownik
Użytkownik
Posty: 269
Rejestracja: 29 wrz 2008, o 16:57
Płeć: Mężczyzna
Lokalizacja: Warszawa\Słupsk
Podziękował: 59 razy
Pomógł: 32 razy

współrzędne końca odcinka obracanego o dany kąt

Post autor: hubertwojtowicz »

co to jest \(\displaystyle{ x_3}\)? jakie są założenia zadania? co jest dane, a co masz otrzymać?
anna_
Użytkownik
Użytkownik
Posty: 16328
Rejestracja: 26 lis 2008, o 20:14
Płeć: Kobieta
Podziękował: 35 razy
Pomógł: 3248 razy

współrzędne końca odcinka obracanego o dany kąt

Post autor: anna_ »

Sprawdź to:

\(\displaystyle{ A=(x_1,y_1)=(160,270)}\) - współrzędne punktu obracanego
\(\displaystyle{ B=(x_1,y_1)=(160,160)}\) - współrzędne środka obrotu
\(\displaystyle{ A'=(x_3,y_3)}\) - współrzędne punktu \(\displaystyle{ A}\) po obrocie po obrocie
\(\displaystyle{ \alpha}\) - kąt obrotu

Rozumiem, że obracamy punkt \(\displaystyle{ A}\) dookoła punktu \(\displaystyle{ B}\)

\(\displaystyle{ x_3=(x_1-x_2)\cos\alpha+(y_1-y_2)\sin\alpha+x_2}\)
\(\displaystyle{ y_3=\left|(x_1-x_2)\sin\alpha-(y_1-y_2)\cos\alpha-y_2 \right|}\)

(\(\displaystyle{ y_3}\) tam jest po prawej wartość bezwzględna)
krokodylek
Użytkownik
Użytkownik
Posty: 30
Rejestracja: 15 wrz 2011, o 13:20
Płeć: Mężczyzna
Lokalizacja: :)
Podziękował: 8 razy

współrzędne końca odcinka obracanego o dany kąt

Post autor: krokodylek »

anna_, wzór który podałaś na \(\displaystyle{ x3}\) jest dokładnie taki sam jak zastosowałem, a on nie działa

Kod: Zaznacz cały

http://jsfiddle.net/VK2ez/15/

tutaj można zerknąć jaką wartość wskazuje ten wzór, kąt odcinka zmienia się strzałkami na klawiaturze
Awatar użytkownika
pyzol
Użytkownik
Użytkownik
Posty: 4346
Rejestracja: 26 kwie 2010, o 11:39
Płeć: Mężczyzna
Lokalizacja: Nowa Ruda
Podziękował: 5 razy
Pomógł: 929 razy

współrzędne końca odcinka obracanego o dany kąt

Post autor: pyzol »

Działa tylko odwrotnie Ci pokazuje-- 11 sie 2012, o 18:30 --A dokładnie, to chodzi o to, że w matmie ruch jest odwrotnie niż w zegarku
anna_
Użytkownik
Użytkownik
Posty: 16328
Rejestracja: 26 lis 2008, o 20:14
Płeć: Kobieta
Podziękował: 35 razy
Pomógł: 3248 razy

współrzędne końca odcinka obracanego o dany kąt

Post autor: anna_ »

anna_ pisze:
\(\displaystyle{ x_3=(x_1-x_2)\cos\alpha+(y_1-y_2)\sin\alpha+x_2}\)
krokodylek pisze: \(\displaystyle{ x3 = ((x1-x2)*cos( \alpha ) - (y1-y2)*sin( \alpha) + x2);}\)
Ja tam widzę pewną różnicę (minus plus)-- dzisiaj, o 18:46 --Poza tym coś z tym programem masz nie tak.
Tam pokazuje, że wspólrzędne końca po obrocie o\(\displaystyle{ 13^o}\) to około \(\displaystyle{ 113,78}\), z rysunku w GeoGebrze wychodzi mi, że to około \(\displaystyle{ 184,74}\) (ze wzoru wychodzi tyle samo)
Awatar użytkownika
pyzol
Użytkownik
Użytkownik
Posty: 4346
Rejestracja: 26 kwie 2010, o 11:39
Płeć: Mężczyzna
Lokalizacja: Nowa Ruda
Podziękował: 5 razy
Pomógł: 929 razy

współrzędne końca odcinka obracanego o dany kąt

Post autor: pyzol »

Brakowało zamiany stopni na radiany we wzorze, możesz sprawdzić (no i oczywiście znaki, które decydowały o kierunku). Dodatkowy problem jest też taki, że źle jest wyświetlana pozycja myszki, o 10 mniej niż powinno, ale tego nie poprawię, bo nie wiem jak.

-- 11 sie 2012, o 19:25 --

w pionie też są przekłamane o 30-- 11 sie 2012, o 19:44 --poprawiająć dwie linijki:

Kod: Zaznacz cały

context.translate(160,180);
x3 = ((x1-x2)*Math.cos(Math.PI/180*angle) + (y1-y2)*Math.sin(Math.PI/180*angle) + x2);
Powinno działać bez zarzutów.
krokodylek
Użytkownik
Użytkownik
Posty: 30
Rejestracja: 15 wrz 2011, o 13:20
Płeć: Mężczyzna
Lokalizacja: :)
Podziękował: 8 razy

współrzędne końca odcinka obracanego o dany kąt

Post autor: krokodylek »

pyzol, wielkie dzięki!
całkiem zapomniałem o zamianie na radiany, to był główny problem
teraz już wszystko działa, współrzędne myszki pokazywane są dobrze bo ja w to nie ingeruję
źle były wklepane współrzędne przeze mnie

Kod: Zaznacz cały

http://jsfiddle.net/VK2ez/26/

teraz działa jak należy, dzięki wszystkim!
pozdrawiam
ODPOWIEDZ