Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 13. 02. 2016 19:37

xlnc
Zelenáč
Příspěvky: 19
Reputace:   
 

Translace a rotace trochu jinak

Omlouvám se všem za "zdržování". Jsem už nějaký pátek mimo školu.

Úloha: Rotace orientované úsečky (vektoru konstantní délky) okolo jejího počátku (třeba klasická hodinová ručička)

Zadání:

Souřadný systém začíná v levém horním rohu. Doprava +x, dolů +y

Počátek a konec úsečky definuji při vytváření, pak už z VBA nedostanu, co je počátek a co konec (ale rotaci budu řídit jen já). Každopádně souřadnice počátku (středu rotace) budou dány a neměnné.

Umístění úsečky definuje VBA levým horním rohem (top, left) a šířkou a výškou (width, height). De facto prostě klasické dva body, druhý dopočítávaný. Tyto vlastnosti mohu měnit.

Rotaci Excel umí jen okolo středu úsečky (úhel ve stupních, ale to není podstatné). A v tom je celý zakopaný pes. S touto vlastností (metodou) také mohu pracovat.

Jak tedy nadefinovat (vypočítávat otočení úsečky okolo jejího počátku třeba o 45°? Samozřejmě mi jde o univerzální postup (plus minus uhel určuje směr CW, CCW, všechny čtyři kvadranty (počátek = počátek úsečky).

Bohužel mi nestačí obecná odpověď "podívej se na matici translace a rotace". Jednoduše mi to nejde a nejde a už z toho blbnu.

Děkuju.

Offline

 

#2 13. 02. 2016 22:02

check_drummer
Příspěvky: 5577
Reputace:   106 
 

Re: Translace a rotace trochu jinak

↑ xlnc:
Ahoj, nestačilo by vzít úsečku dvakrát delší? A pak tedy rotace kolem středu té větší úsečky bude rotací okolo počátečního bodu té původní úsečky. Přesněji - máš úsečku AB a chceš rotovat kolem A, pak zvolíš bod C tak, že A je střed CB a budeš rotovat CB kolem jejího středu.


"Máte úhel beta." "No to nemám."

Offline

 

#3 13. 02. 2016 22:06 — Editoval xlnc (13. 02. 2016 22:17)

xlnc
Zelenáč
Příspěvky: 19
Reputace:   
 

Re: Translace a rotace trochu jinak

↑ check_drummer:

Taky mě to napadlo, ale nevím, jestli to riskovat. V případě, že je úsečka příliš blízko počátku souřadného systému (v extrému třeba [0,0], [100,100], neprotáhnu ji do "mínusu". Jistě, takhle narvanou do rohu bych ji ani neotočil. Nezavrhuju to úplně, teoreticky počítat s prostorem musím, tudíž by asi stačilo nastavit ji ve spodním bodě (prostě v počátku...) a točit za střed po sloučení. Popravdě se mi ale ani nechce vykreslovat tu pomocnou úsečku.

Offline

 

#4 13. 02. 2016 22:10

xlnc
Zelenáč
Příspěvky: 19
Reputace:   
 

Re: Translace a rotace trochu jinak

Je tu varianta vykreslit úsečku znova, ale za předpokladu že je to složitější objekt (pořád úsečka, ale s vlastnostmi tloušťky, barvy, značky v počátku, typu šipky na konci,  ...), tak je to otrava.

Já chápu, že musím postavit matice translace a rotace, ale postě mi to nejde přes všechny kvadranty, znaménka úhlu, ...

Offline

 

#5 14. 02. 2016 18:54

check_drummer
Příspěvky: 5577
Reputace:   106 
 

Re: Translace a rotace trochu jinak

↑ xlnc:
Ale vždyť tu pomocnou úsečku vykreslovat nemusíš ne? A ony jsou zakázány záporné souřadnice bodů? Tak bys to musel posunout "do kladna" (ne do města) a pak po rotaci zase zpět.


"Máte úhel beta." "No to nemám."

Offline

 

#6 14. 02. 2016 18:56

xlnc
Zelenáč
Příspěvky: 19
Reputace:   
 

Re: Translace a rotace trochu jinak

Jo ty myslíš prodloužit stávající... a pak vrátit na původní délku?

Offline

 

#7 14. 02. 2016 19:11

check_drummer
Příspěvky: 5577
Reputace:   106 
 

Re: Translace a rotace trochu jinak

↑ xlnc:
Vyjde-li nějaký bod v CB záporný, posuň celou úsečku o vhodný vektor v tak, aby byly všechny body kladné, pak ji otoč a posuň o -v zpět.


"Máte úhel beta." "No to nemám."

Offline

 

#8 14. 02. 2016 19:34

xlnc
Zelenáč
Příspěvky: 19
Reputace:   
 

Re: Translace a rotace trochu jinak

Vyzkouším, zatím díky za tvůj víkendový čas..

Offline

 

#9 15. 02. 2016 11:02 — Editoval Rumburak (15. 02. 2016 11:43)

Rumburak
Místo: Praha
Příspěvky: 8691
Reputace:   502 
 

Re: Translace a rotace trochu jinak

↑ xlnc:

Ahoj.

Dobrý početní aparát pro translaci  i rotaci  v rovině poskytuje teorie komplexních čísel.

Translací bodu $A = [a_1 , a_2] = a_1 + a_2 i$ vektorem $\vec{u} = (u_1 , u_2) = u_1 + u_2 i$
se dostaneme do bodu   $B = A + \vec{u} = (a_1 + a_2 i) + (u_1 + u_2 i) = ... $.

Rotací výše uvedeného bodu $A$ okolo počátku $P = 0 = 0 + 0i$ o úhel $\varphi$ dostaneme bod

         $F = (a_1 + a_2 i)(\cos \varphi  +  i \sin\varphi) = ... $ .

Rotaci bodu $A$ okolo obecného středu $S$ provádíme takto:

1.  vezmeme translaci $f$ , při které je $f(S) = P$ ;

2.  o daný úhel otočíme bod $f(A)$, avšak okolo středu $P$ -  výsledkem této operace bude jistý bod $X$ ;

3.  nyní najdeme bod $C = f^{-1}(X)$, což je už konečný výsledek.

Offline

 

#10 15. 02. 2016 11:10

xlnc
Zelenáč
Příspěvky: 19
Reputace:   
 

Re: Translace a rotace trochu jinak

Juknu na to malinko později (a zavařím se :-)) Děkuju.

Offline

 

#11 16. 02. 2016 13:27

Eratosthenes
Příspěvky: 3111
Reputace:   140 
 

Re: Translace a rotace trochu jinak


Budoucnost patří aluminiu.

Offline

 

#12 16. 02. 2016 22:27

xlnc
Zelenáč
Příspěvky: 19
Reputace:   
 

Re: Translace a rotace trochu jinak

I tobě díky za odpověď. Upřímně, nevím, co představuje ten "třetí rozměr" - jakoby nějaký jednotkový vektor? Prostě jsem ze školy dlouho a starej a pitomej :-)

A malinká podotázka - mohu vědět, v čem byl nakreslen obrázek? Něco jako LaTex? Občas potřebuju znázornit jednodušší věci - množiny, poloroviny, ... Asi nejvíc mi sedla na podobné věci GeoGebra.

Offline

 

#13 17. 02. 2016 17:48

Eratosthenes
Příspěvky: 3111
Reputace:   140 
 

Re: Translace a rotace trochu jinak

↑ xlnc:

takto relativně jednoduše to vypadá díky tomu, že se jedná o transformaci v tzv. projektivní rovině, kde má každý bod tři souřadnice. Velmi jednoduše řečeno: bod v projektivní rovině je "směr", tj. libovolný nenulový násobek jistého (nenulového) vektoru. Je-li ten násobek vybrán tak, že třetí souřadnice je jednička, pak první dvě souřadnice jsou klasické kartézské souřadnice v běžné eukleidovské rovině. Zcela prakticky: První dva řádky ve všech maticích jsou kartézské souřadnice a ty třetí řádky z nul a jedniček jsou tam proto, aby to všechno fungovalo jako násobení matic.

PS: Obrázek je kreslený v Rhinoceros. Je to prostorový modelář (bohužel není zadarmo).


Budoucnost patří aluminiu.

Offline

 

#14 17. 02. 2016 18:46

xlnc
Zelenáč
Příspěvky: 19
Reputace:   
 

Re: Translace a rotace trochu jinak

Rhino jsem kdysi zkoušel...

Pro tuto chvíli děkuju všem zúčastněným za čas a práci. Musím se do toho ponořit.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson