Domanda

Io so come testare intersezione tra un punto e un triangolo.

... Ma io non farlo, come posso spostare la posizione iniziale del punto sul piano schermo precisamente utilizzando le coordinate del mouse, quindi l'angolo di punta dovrebbe cambiare a seconda di dove cursore del mouse sullo schermo, anche questo dovrebbe funzionare perfettamente, non importa quale angolo di prospettiva sto usando nella mia applicazione OpenGL, così l'angolo di punto sarebbe diverso su diverse angolazioni prospettiche ... gluPerspective () è la funzione im parlando.

È stato utile?

Soluzione

Bene, ci vorrà un colpo e indovinate cosa vuoi dire. L'ipotesi è che si desidera ritirare gli oggetti con il mouse. Partenza:

glUnProject .

Questo trasforma le coordinate di schermo di nuovo in coordinate mondo 3D.

Google ha più informazioni se si esegue in problemi.

Cheers!

Altri suggerimenti

Si, voglio spostare il punto sul piano dello schermo, così per esempio ho potuto rendere un cubo su quel punto in cui il mio mouse è attualmente, utilizzando le coordinate 3D, e poi ho scattato una linea da quella posizione al luogo dove il mio mouse è puntato, quindi sarebbe colpito il triangolo nel mio mondo 3D, e che come ho potuto selezionare l'oggetto con il mouse.

dispiaciuto per essere stato poco chiaro: /

-

Modifica: yay ho capito di lavoro con quella esercitazione Nehe! grazie, non sapevo che sarebbe stato così facile!

Questo è il codice im usando ora e funziona benissimo:

void GetOGLPos(int x, int y, GLdouble &posX, GLdouble &posY, GLdouble &posZ){
    GLint viewport[4];
    GLdouble modelview[16];
    GLdouble projection[16];
    GLfloat winX, winY, winZ;

    glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
    glGetDoublev(GL_PROJECTION_MATRIX, projection);
    glGetIntegerv(GL_VIEWPORT, viewport);

    winX = (float)x;
    winY = (float)viewport[3]-(float)y;
    glReadPixels(x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);

    gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);
}

È necessario generare un raggio (linea) passando attraverso la posizione del mouse perpendicolare allo schermo.

Consiglio di prendere alcune informazioni di base sulla geometria 3D e 2D proiezioni prima di andare molto più in là.

Wikipedia

Un Ricerca libro su Google ha messo a punto un bel paio di titoli.

Foley & Van Dam è però il libro definitivo - qui su Amazon.co.uk o qui su Amazon.com

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top