Vai al contenuto

Virtual trackball OpenGL


Sam84

Messaggi raccomandati

Ciao!

Devo realizzare una trackball virtuale, con OpenGL e il C.

La funzione principale della trackball è:

void mouseTrack(Vect* vRotAxis, GLfloat* angle, Vect vin) {
Vect vDiff;
float len=0.0, alpha=0.0;
*angle=0.0;
vCurr=projectOnSphere(vin, TRACK_RAY);
normalize(&vCurr);
*vRotAxis=cross(vPrev, vCurr);
normalize(vRotAxis);
vDiff=sub(vCurr, vPrev);
alpha=len/(2*TRACK_RAY);
if(alpha<-1.0) alpha=-1.0;
if(alpha>1.0) alpha=1.0;
*angle=2*RAD_TO_DEG*asin(alpha);
vPrev=vCurr;
}

Xcode però mi da l'errore: "incompatible types in assignment" per le righe:

*vRotAxis=cross(vPrev, vCurr);

e

vDiff=sub(vCurr, vPrev);

Qualcuno ha idea di come mai?

O mi sa suggerire un altro modo di realizzare una virtual trackball?

Grazie...

:ghghgh:

Link al commento
Condividi su altri siti

sicuro che la funzione cross non restituisca un puntatore invece di un elemento?

in tal caso togli * davanti a vRotAxis

per quanto riguarda la funzione sub anche qui bisogna vedere il suo prototype perche` se restituisce un puntatore vDiff deve essere dichiarato come puntatore a Vect e in tal caso dovrai anche allocare dinamicamente lo spazio con una malloc

Expertise Areas: MacGenius && Networking Expert

Link al commento
Condividi su altri siti

Grazie.

Il problema era che quelle due funzioni (sub e cross) non erano definite.

Purtroppo è un'implementazione che mi ha passato il docente del corso di OpenGL e pensavo proprio che avesse messo tutto. :D

In ogni caso...

... ora quel problema l'ho risolto, vedendo altre versioni di trackball virtuali.

Però la trackball funziona proprio male (nel senso che la scena si vede tutta distorta e solo da quando clicco con il mouse).

Se posto il codice, qualcuno mi può aiutare? :D

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...