Autore Topic: Disengare un cilindro  (Letto 1260 volte)

Offline bobo78

  • Utente junior
  • **
  • Post: 55
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    nexus one
  • Sistema operativo:
    Win XP
Disengare un cilindro
« il: 03 Dicembre 2010, 10:17:26 CET »
0
Ciao a tutti,
sto cercando di disegnare un cilindro con opengl. Sto cercando un esempio da cui partire, ma su internet non ho trovato nulla.

Qualcuno sa darmi qualche dritta?

Grazie mille

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Disengare un cilindro
« Risposta #1 il: 03 Dicembre 2010, 10:28:12 CET »
0
Ciao a tutti,
sto cercando di disegnare un cilindro con opengl. Sto cercando un esempio da cui partire, ma su internet non ho trovato nulla.
Qualcuno sa darmi qualche dritta?

Non so rispondere personalmente alla tua domanda, ma se dovessi cercare io la risposta scriverei in google android opengl cylinder.

Il secondo link mi sembra ottimo, sicuramente tu sai giudicarlo meglio di me

        OpenGL ES Tutorial for Android – Part V – More on Meshes — Jayway Team Blog   
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Disengare un cilindro
« Risposta #2 il: 03 Dicembre 2010, 11:31:20 CET »
+2
siccome l'avevo gia fatto in java con jogl, ti posto il codice che avevo usato, sicuramente non è ottimizzato ma vabbe, una buona partenza:
float[] center è un array di 3 elementi con coordinate x,y,z del punto del centro. radius è il raggio di circonferenza ai "lati" del cubo. height,vabbe,la distanza tra le due circonferenze.
vedi se riesci ad usarlo!
Codice (Java): [Seleziona]
public static void drawCylinder(float[] center, float radius,float height, GL2 gl){
                int edges = (int) (radius*25);
                edges = 40;
                float angle = (float) (2* Math.PI / edges);
                float cx = center[0];
                float cy = center[1];
                float cz = center[2];
                float[] points = new float[edges*2];
                for (int i = 0; i<edges;i++){
                        float X = cx+(float)( radius * (Math.cos(angle*i)));
                        float Z = cz+(float)( radius * (Math.sin(angle*i)));
                        points[i*2] = X;
                        points[i*2 + 1]= Z;
                }
                gl.glColor3f(0.60f, 0.45f, 0.05f);
                gl.glBegin(GL2.GL_POLYGON);
                for (int j=0;j<edges;j++){
                        gl.glVertex3f(points[j*2],cy, points[j*2 +1]);
                }
                gl.glEnd();
                gl.glColor3f(0.95f, 0.78f, 0.38f);
                gl.glBegin(GL2.GL_POLYGON);
                for (int j=0;j<edges;j++){
                        gl.glVertex3f(points[j*2],cy+height, points[j*2 +1]);
                }
                gl.glEnd();            
                gl.glBegin(GL2.GL_QUADS);
                for (int j=0;j<points.length-3;j+=2){
                        gl.glColor3f(0.95f, 0.78f, 0.38f);
                        gl.glVertex3f(points[j],cy, points[j+1]);
                        gl.glVertex3f(points[j+2], cy, points[j+3]);

                        gl.glColor3f(0.60f, 0.45f, 0.05f);
                        gl.glVertex3f(points[j+2], cy+height, points[j+3]);
                        gl.glVertex3f(points[j],cy+height, points[j+1]);
                }
                gl.glColor3f(0.95f, 0.78f, 0.38f);
                gl.glVertex3f(points[points.length-2],cy, points[points.length-1]);
                gl.glVertex3f(points[0], cy, points[1]);
                gl.glColor3f(0.60f, 0.45f, 0.05f);
                gl.glVertex3f(points[0], cy+height, points[1]);
                gl.glVertex3f(points[points.length-2],cy+height, points[points.length-1]);
                gl.glEnd();
        }
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia