Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
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
↑ 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.
Offline
↑ 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
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
↑ 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.
Offline
↑ 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.
Offline
↑ xlnc:
Ahoj.
Dobrý početní aparát pro translaci i rotaci v rovině poskytuje teorie komplexních čísel.
Translací bodu
vektorem
se dostaneme do bodu
.
Rotací výše uvedeného bodu
okolo počátku
o úhel
dostaneme bod
.
Rotaci bodu
okolo obecného středu
provádíme takto:
1. vezmeme translaci
, při které je
;
2. o daný úhel otočíme bod
, avšak okolo středu
- výsledkem této operace bude jistý bod
;
3. nyní najdeme bod
, což je už konečný výsledek.
Offline
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
↑ 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).
Offline