Eulerovy úhly
| Uživatel | Příspěvek | 
                      Martin Kopecký ![]() ![]() Poslat zprávu | Profil  | 
                         
                        Datum:
                        24.11. 2016
                         | Zobrazeno:  
                        10000x Konfigurace CATIA: Catia/Delmia V5-6R2014 Text dotazu: oPosition.GetComponents iAxisComponentsArray V produktu v TagGroup vytvořím Tag, nastavím pozici oTag.SetXYZ iAxisComponentsArray(9), iAxisComponentsArray(10), iAxisComponentsArray(11) Následuje nastavení orientace Tagu, kde zatím nevím jak správně postupovat. SetYPR V prvním kroku jsem získal matici transformace, ze které potřebuji získat Eulerovy úhly. Jak zjišťuji, tak to není tak jednoduché a jednoznačné, jak jsem si myslel. Víte někdo jak správně spočítat úhly a zorientovat Tag? Napadá vás jiný postup jak vytvořit Tag totožný s AbsoluteAxisem Partu (např. přímým volání příkazu "c:Frame Type")?  | 
                           
                           Martin Kopecký ![]() ![]() Poslat zprávu | Profil  | 
                            [#6039]
                             | Publikováno: 
                            25.11. 2016 - 14:06 Malá oprava, respektive upřesnění.
 Úhly, kterými se zadává orientace Tagu, nejsou Eulerovy, jako je známe z PartDesignu - z - x' - z'', ale Yaw, Pitch, Roll. Tedy rotace kolem os - x - y - z.  | 
                           
                           Ing Jan Cinert ![]() Poslat zprávu | Profil  | 
                            [#6040]
                             | Publikováno: 
                            25.11. 2016 - 14:11 Dobrý den,
 v příloze dokument o výpočtu Eulerových úhlů. Kdysi jsem psal makro, kdy jsem potřeboval vypočítat úhly pro definici Axis systému, znal jsem jen normované vektory jednotlivých os. Tenkrát jsem si s tím poradil a tohle mi dost pomohlo. Podívejte se na to, třeba najdete co hledáte.  | 
                           
                           Martin Kopecký ![]() ![]() Poslat zprávu | Profil  | 
                            [#6043]
                             | Publikováno: 
                            29.11. 2016 - 09:48 Uživatel odpovídá na příspěvek #6040:
 Díky, pomohlo to. Konvence yaw - pitch - roll mi trochu zamotala hlavu. Různé zdroje uvádějí pořadí a názvy osa/uhel odlišně. Pořád nevím jestli to je jen zvolené názvosloví nebo jestli to má hlubší smysl. Dále mě zarazilo, jak vlastně vypočítat matici rotace. Podle většiny zdrojů rotace x-y-z se spočítá RzRyRx. V dokumentu od Vás rotaci z-y-x počítají zase jako RzRyRx. Já mám rotaci x-y-z, tak jsem zkusil RxRyRz a konečně mi vycházejí správná čísla a všechno jde pěkně odvodit. Doufám, že ošetřením kvadrantů zajistím už 100 % správné výsledky. Což mě přivádí k dalšímu dotazu... Mám funkci atan2, kde mi vstupují 2 hodnoty Public Function Atan2(y As Double, x As Double) As Double Jako y a x zadávám hodnoty z matice rotace, což jsou desetinná číška s des. čárkou. To způsobí chybu. Hodnotu y=0,707 funkce bere jako y=0, x=707. Poradíte, co mám změnit?  | 
                           
                           Ing Jan Cinert ![]() Poslat zprávu | Profil  | 
                            [#6044]
                             | Publikováno: 
                            29.11. 2016 - 15:06 V tomhle případě by mohlo stačit převést na správný typ - double, např. takhle
 x = CDbl(input.ToString.Replace(",","."))  | 
                           
                           Martin Kopecký ![]() ![]() Poslat zprávu | Profil  | 
                            [#6045]
                             | Publikováno: 
                            30.11. 2016 - 18:37 "CDbl" mi končí chybou mismatch.
 Převést na text, nahradit čárku tečkou a pak převést zpět na číslo jsem už zkoušel pomocí "Val". Výsledek byl stejný jako na začátku - číslo s des. čárkou. V makru jsem to obešel. Hodnoty x a y přiřazuji před voláním fce atan2. Jinak po ošetření kvadrantů se zdá, že už makro funguje správně. Kdyby někdo řešil podobný problém, tak jsem našel šikovný dokument (s ošetřením kvadrantů a pseudocody):  | 
Uživatel nepřihlášen
Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.









 
                                       


