[semi-OT] quesito conversioni angoli roll-pitch-yaw

From: Soviet_Mario <SovietMario_at_CCCP.MIR>
Date: Sun, 7 Nov 2021 04:26:19 +0100

penso sia semi OT, o forse OT (è geometria in effetti), ma
per voi è una passeggiata di un attimo

premesso, sto scrivendomi dei programmini "helper" per
OpenSCAD, ossia che costruiscono arrays di coordinate o di
angoli nel formato "roll-pitch-yaw" che poi OpenSCAD usa
nativamente.

Esternamente, genero dei "path" (con funzioni che in un
linguaggio "vero", non me ne vogliano i puri funzionalisti
:D, diciamo dichiarativo, possono banalmente essere
iterative, mentre in uno funzionale diventano ricorsive e mi
ci perdo), ossia generiche SPEZZATE angolose, e creo le
coordinate a cui poi spostare "oggetti" costruiti con openscad.

Dopodiché, questi oggetti però non dovrebbero venire solo
TRASLATI alle coordinate date, ma opzionalmente RUOTATI in
3D (mi sto sforzando di ottenere una "pseudo" tangenza,
usando la direzione SECANTE il percorso 3D per i due punti
confinanti, il precedente e il successivo, e tanto mi
basta), ma ho un problema di conversione.

Mi spiego meglio.

in INPUT ho due punti (con uno intermedio), da cui ricavo
DeltaX, DeltaY e DeltaZ (riferiti alla secante passante per
gli stessi).

Devo convertirli in angoli di rotazione per poter disporre
un oggetto correttamente ruotato nel punto intermedio agli
stessi.

Ora ioe la cavicchio con le coordinate SFERICHE (che hanno
un raggio o modulo, e soli DUE ANGOLI, zenitale e
azimutale), e ho già qualche routine che dai 3 Delta ottiene
Azimut e Zenith, così come pure l'inverso (usando dei delta
normalizzati a 1 per convenzione mia, perché ovviamente
l'inverso non ha una soluzione univoca).


Ma la funzione rotate () nativa non usa i due angoli delle
coordinate sferiche,
invece vuole TRE angoli ROLL / PITCH / YAW
e io non so come ottenerli a partire


P.S. dalla terna di angoli ROLL / PITCH / YAW mi sono
trascritto (ho brutalmente copiato codice altrui open) una
routine che crea una matrice di rotazione quadrata 3x3,
perché a volte mi serve ruotare gli oggetti direttamente
dentro l'altro linguaggio, e non invocare rotate () nativa
di openSCAD.

L'inverso non l'ho implementato perché non mi serve in
nessuno scenario concreto.

Ma mi resta il problema di fondo che non so come convertire
la notazione "angoli zenith/azimut in coord sferiche" nella
notazione "angoli roll/pitch/yaw" usata da openSCAD, né il
contrario.

E o non trovo nada, oppure se lo vedo, non capisco nemmeno
che sia quello l'argomento.

Mi accontenterei se sapeste indicarmi una risorsa in rete.
Intanto spulcio in Rosetta Code, ma dispero abbastanza.


-- 
1) Resistere, resistere, resistere.
2) Se tutti pagano le tasse, le tasse le pagano tutti
Soviet_Mario - (aka Gatto_Vizzato)
Received on Sun Nov 07 2021 - 04:26:19 CET

This archive was generated by hypermail 2.3.0 : Thu Nov 21 2024 - 05:10:01 CET