2012-11-03 16 views
8

Ho un cilindro di lunghezza 2f, e i dati per RotX e RotZ, dati dall'utente. So anche che il "fondo" del mio cilindro è a (0,0,0) (il centro del cerchio che forma il "fondo")Come calcolare il centro del cerchio "superiore", dati gli angoli di rotazione?

Quello che mi serve è calcolare il punto "superiore" (il centro del cerchio all'altra estremità) con i dati esposti nelle righe superiori.

Nella mia seconda immagine, il punto A viene calcolata come segue (sin (Zangle), cos (Zangle), sin (xAngle) con Zangle = PI/4 (angolo alfa) e xAngle = 0.
Point B è calcolato come (sin (xAngle), cos (xAngle), sin (zAngle)) con xAngle = PI/4 (angolo beta) e zAngle = 0;
Punto C è la "cima" di un cilindro con xAngle = PI/4 e Zangle = PI/4.
ho bisogno di trovare un algoritmo per determinare il punto di "top" per qualsiasi dato xAngle e Zangle.

sarei estremamente grato se qualcuno mi potrebbe aiutare.

RotZ and RotX explained Example

risposta

2

Prima delle rotazioni, la parte superiore è a 2f * (0,1,0).

Dopo aver ruotato il cilindro attorno all'asse z con l'angolo alfa, la parte superiore è su 2f * (sin alpha, cos alpha, 0).

Se si ruota il cilindro di un angolo beta attorno all'asse x, la parte superiore passa a 2f * (sin alpha, cos alpha * cos beta, cos alpha * sin beta).

+0

P.S. Vedo che hai pubblicato la stessa domanda nella sezione Matematica. Sono d'accordo con il commento che le matrici di rotazione sono un buon modo per affrontare questo problema - facile da implementare e concettualizzare. – nasenbohrer

+0

Io uso i MATERIALI DI ROTAZIONE, poiché è così che funziona Transform3D. È una matrice di 4x4 in cui la matrice 3x3 superiore rappresenta la matrice di rotazione, ma non ero abbastanza sicuro su come determinare le estremità. Grazie mille –

Problemi correlati