Kezdőoldal » Tudományok » Természettudományok » Hogyan lehet megkapni egy...

Hogyan lehet megkapni egy adott koordinátájú pontnak egy másik adott pont körüli adott szöggel való elforgatottjának a koordinátáit?

Figyelt kérdés

2018. ápr. 15. 20:40
 1/7 anonim ***** válasza:

Legyenek a forgatandó pont koordinátái p1x,p1y, ami körül forgatunk, annak pedig p2x,p2y.

Legyen a "rotation" az elforgatás szöge.


Először meghatározzuk a két pont közti, p2-ről p1-re mutató vektort:

dx = p1x - p2x

dy = p1y - p2y


Valamint a két pont távolságát. Ez a kör sugara, amely mentén forgatunk:

r = sqrt(dx*dx + dy*dy)


A vektor X tengellyel bezárt jelenlegi szögét az atan2 függvénnyel kapjuk meg ( [link]

angle = atan2(dy, dx)


Ehhez a szöghöz hozzáadjuk azt a szöget amellyel elforgatni szeretnénk a pontot:

angle += rotation


A kapott szögből meghatározzuk az új, X tengelyhez képest elforgatott vektort (a sin/cos ugye egységvektort ad, ezt beszorozzuk a sugárral, hogy a vektorunk hossza megfelelő legyen):

dx = cos(angle) * r

dy = sin(angle) * r


A kapott vektor már jó irányba mutat, de még át kell helyezni, hogy a p2 pontból induljon ki, így kapjuk meg a végső koordinátákat:

p1x = p2x + dx

p1y = p2y + dy

2018. ápr. 15. 21:36
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:
Kis kiegészítés: minden szög radiánban értendő.
2018. ápr. 15. 21:46
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:

Az első válasz jó, de jó lenne tudni, mire akarod ezt az eljárást használni.

Ha egy számítási feladatban kell egy pontot így meghatározni papíron ceruzával, akkor ok.

Ha egy számítógépes algoritmust akarsz írni mondjuk egy CAD programhoz, akkor nagyon nem jó, mert időnként el fog szállni. A probléma az, hogy osztás van benne, ráadásul nullával (vagy ahhoz nagyon közeli értékkel) való osztás is lehet, aminek a vége előbb utóbb az elszállás lesz. Ebben az esetben érdemesebb mátrixokkal dolgozni, a forgatási mátrix kifejtésekor nem kell osztani, nem kell logikázni, hogy melyik síknegyedben vagy, sokkal jobban algoritmizálható.

2018. ápr. 15. 22:37
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:
Köszi!
2018. ápr. 15. 23:40
 5/7 anonim ***** válasza:
A nullával osztás könnyen elkerülhető, pl.: angle = arcsin(dy/r)
2018. ápr. 16. 12:15
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:
Dehogy kerülhető el, ki mondta, hogy az r nem lehet 0, vagy nagyon kicsi szám?
2018. ápr. 16. 15:02
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

"ki mondta, hogy az r nem lehet 0"

A kérdező: "egy másik adott pont"

"vagy nagyon kicsi szám"

Ez általában benne van a pakliban, de most nem valószínű:

A számoló/számítógép 1E99-ig, vagy 1E308-ig nem akad ki. Aligha fogják 100 ill. 300 tizedesjegyre, ill. ilyen nagyságrendben megadni a koordinátákat!

És ez mátrix-számításnál ugyanúgy lehetséges probléma.

2018. ápr. 17. 10:33
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!