Tema: Taško padėtis

Gera diena,

Taigi, yra plokštuma, kurioje tam tikras objektas bei atskiras taškas priklausantis nuo to objiekto padėties bei pasisukimo laipsnio. Reikia pasirašyti priklausomybę atskiro taško koordinatėms surasti, objiektui pasisukus tam tikrą kiekį laipsnių. Štai pavyzdys:

http://www.part.lt/img/993345ed90886bae6c7f1d838b6715b9859.JPG

Raudono stačiakampio koordinatės yra X1;Y1 bei jo pasisukimo laipsnis lygus A. Raudono taško koordinatės yra:
X + o1;Y + o2.

Pasisukus raudonajam stačiakampiui turėtų pasikeisti ir raudonojo taško pozicija:

http://www.part.lt/img/6e78969b0acfe64e0f402e2e8dccda30861.JPG

Taigi klausimas - kaip surasti raudonojo taško koordinates, pagrindiniam objiektui pasisukus?

Paskutinį kartą keitė Blantas (2011-03-27 11:14:40)

Thumbs up

 

 

2

Ats: Taško padėtis

Lengviausia turbūt būtų užrašyti pradinio taško koordinates polinėje koordinačių sistemoje:
x = r cos(a)
y = r sin(a)
kai pasuki, atstumas nuo koordinačių pradžios iki raudono taško nepasikeičia, pasikeičia kampas, a+A, tad nauja padėtis taško:
x' = r cos(a+A)
y' = r sin(a+A)
Jei atsakymo reikia stačiakampėse koordinatėse, pasinaudok "tam tikromis" trigonometrijos formulėmis, nepamiršdamas kad x = r cos(a) ir y = r sin(a).

Paskutinį kartą keitė house_martin (2011-03-27 11:49:13)

Thumbs up

3

Ats: Taško padėtis

Hm... Lyg ir supratau idėją, tačiau greičiausiai nepavyko jos įgyvendinti. Dariau taip:

Apsiskaičiavau atstumą pradinio raudono taško ir objiekto centro. Tuomet pradines raudonojo taško x;y koordinates padalinau iš apskaičiuoto atstumo ir iš gauto atsakymo išsireiškiau pradinius pasisukimo laipsnius. Tuomet prie jų pridėjau, pasisukimo laipsnius objiektui pasisukus, ir atitinkamai panaudojau sin bei cos formules. Rezultatą padauginau iš ilgio, tačiau gautosios koordinatės yra klaidingos.

Išbandant naudojau 1;1 kaip raudonojo taško koordinates bei 180 laipsnių, kaip pasisukimą. Objiekto centrą pasirinkau plokštumos centro koordinates 0;0. Pagal viską, objiektui pasisukus tiek laipsnių, taško koordinatės turėtų būti - 1;- 1, tačiau buvo visiškai kitokios.

Thumbs up

4

Ats: Taško padėtis

Aš tavo pateiktą sąlygą atmestinai perskaičiau prieš rašydamas ;] tai ką parašiau ankstesniame pranešime, tinka kai suki apie koordinačių centrą, ale apie (0,0) tašką. Tada turėtum gauti tokias naujo taško koordinčių išraiškas:
x' = x cos(A) - y sin(A)
y' = x sin(A) + y cos(A)
Jei tašką (1,1) pasuki 180 laipsnių kampu apie (0,0), cos(180) = -1, sin(180) = 0, gaunasi:
x' = -x = -1
y' = -y = -1
O jeigu taškas apie kurį suki, nėra (0,0) tai nežinau kaip tada. Galiu pasiūlyti nebent užrašyti taško kurį suki koordinates atžvilgiu taško apie kurį suki, taip tarsi padarytum sukimosi ašį koordinačių centru. Ir po pasukimo pridėti sukimosi ašies koordinates prie x' ir y' išraiškų. Tad viskas atrodytų taip:
x' = X1 + (x-X1)*cos(A) - (y-Y1)*sin(A)
y' = Y1 + (x-X1)*sin(A) + (y-Y1)*cos(A)
(X1, Y1) koordinatės taško apie kurį suki.
Galima patikrinti paprastam atvejui, jei X1 = Y1 = 1, x = 1, y = 2

po visko naujos koordinatės turėtų būti (1, 0).
x' = 1 + (1-1)*cos(180) - (2-1)*sin(180) = 1
y' = 1 + (1-1)*sin(180) + (2-1)*cos(180) = 0

Blantas rašė:

Dariau taip:
Apsiskaičiavau atstumą pradinio raudono taško ir objiekto centro. Tuomet pradines raudonojo taško x;y koordinates padalinau iš apskaičiuoto atstumo ir iš gauto atsakymo išsireiškiau pradinius pasisukimo laipsnius. Tuomet prie jų pridėjau, pasisukimo laipsnius objiektui pasisukus, ir atitinkamai panaudojau sin bei cos formules. Rezultatą padauginau iš ilgio, tačiau gautosios koordinatės yra klaidingos.

nesupratau kaip tu mėginai daryti.
Dargi su matricom, jeigu žinai tokias, gali viską daug lengviau užrašyti.

Paskutinį kartą keitė house_martin (2011-03-27 17:48:32)

Thumbs up +1