{"id":88,"date":"2015-05-18T19:01:05","date_gmt":"2015-05-18T17:01:05","guid":{"rendered":"http:\/\/liceocuneo.it\/grafica\/?page_id=88"},"modified":"2015-11-11T19:18:06","modified_gmt":"2015-11-11T18:18:06","slug":"materiali","status":"publish","type":"page","link":"https:\/\/liceocuneo.it\/grafica\/materiali\/","title":{"rendered":"Materiali"},"content":{"rendered":"<p style=\"text-align: justify\">In questo esempio vedremo come utilizzare i materiali per modificare il colore della superficie degli oggetti, come visualizzare del testo e tracciare delle linee. A programma completato sar\u00e0 visibile la molecola di acqua che ruota, cos\u00ec come appare nel video della pagina iniziale di questo sito.<\/p>\n<p style=\"text-align: justify\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-91\" src=\"https:\/\/liceocuneo.it\/grafica\/wp-content\/uploads\/sites\/43\/acqua.png\" alt=\"acqua\" width=\"640\" height=\"360\" srcset=\"https:\/\/liceocuneo.it\/grafica\/wp-content\/uploads\/sites\/43\/acqua.png 640w, https:\/\/liceocuneo.it\/grafica\/wp-content\/uploads\/sites\/43\/acqua-300x169.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p><strong>GLRenderer.java<\/strong><\/p>\n<pre>public class GLRenderer implements GLEventListener {\r\n\r\n    float a = 0.0f;\r\n\r\n    @Override\r\n    public void init(GLAutoDrawable drawable) {\r\n        GL2 gl = drawable.getGL().getGL2();\r\n\r\n        \/\/ imposta le caratteristiche della sorgente di luce 0\r\n        float[] lAmbiente = new float[]{1, 1, 1, 1};\r\n        float[] lDiffusa = new float[]{1, 1, 1, 1};\r\n        float[] lSpeculare = new float[]{1, 1, 1, 1};\r\n        float[] lPosizione = new float[]{0, 5, 5, 1};\r\n\r\n        gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_AMBIENT, lAmbiente, 0);\r\n        gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_DIFFUSE, lDiffusa, 0);\r\n        gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPECULAR, lSpeculare, 0);\r\n        gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, lPosizione, 0);\r\n\r\n        \/\/ imposta le caratteristiche del materiale\r\n        float[] mAmbiente = new float[]{0, 0, 0, 1};\r\n        float[] mDiffusa = new float[]{1, 1, 1, 1};\r\n        float[] mSpeculare = new float[]{1, 1, 1, 1};\r\n        float[] mEmissione = new float[]{0, 0, 0, 1};\r\n        float[] mLucentezza = new float[]{10};\r\n\r\n        gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_AMBIENT, mAmbiente, 0);\r\n        gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_DIFFUSE, mDiffusa, 0);\r\n        gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_SPECULAR, mSpeculare, 0);\r\n        gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_EMISSION, mEmissione, 0);\r\n        gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_SHININESS, mLucentezza, 0);\r\n\r\n        \/\/ attiva la sorgente di luce 0\r\n        gl.glEnable(GL2.GL_LIGHT0);\r\n        \/\/ attiva l'iluminazione\r\n        gl.glEnable(GL2.GL_LIGHTING);\r\n        \/\/ attiva il materiale\r\n        gl.glEnable(GL2.GL_COLOR_MATERIAL);\r\n        \/\/ attiva il test di profondit\u00e0 per disegnare solo parti visibili\r\n        gl.glEnable(GL2.GL_DEPTH_TEST);\r\n        \/\/ imposta il colore di sfondo\r\n        gl.glClearColor(0, 0, 0.1f, 0);\r\n    }\r\n\r\n    @Override\r\n    public void dispose(GLAutoDrawable drawable) {\r\n    }\r\n\r\n    @Override\r\n    public void display(GLAutoDrawable drawable) {\r\n        GL2 gl = drawable.getGL().getGL2();\r\n        GLUT glut = new GLUT();\r\n\r\n        \/\/ cancella l'immagine e il buffer per il test di profondit\u00e0\r\n        gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);\r\n\r\n        gl.glLoadIdentity();\r\n        gl.glRotatef(a, 1, 1, 1);\r\n        gl.glBegin(GL2.GL_LINES);\r\n        gl.glVertex3f(0, 0, -3);\r\n        gl.glVertex3f(0, 0, 3);\r\n        gl.glEnd();\r\n\r\n        \/\/ ossigeno\r\n        gl.glColor3f(0.4f, 0.05f, 0.05f);\r\n        gl.glLoadIdentity();\r\n        gl.glRotatef(a, 1, 1, 1);\r\n        glut.glutSolidSphere(1, 72, 36);\r\n        \/\/ lettera O\r\n        gl.glColor3f(0.4f, 0.4f, 0.4f);\r\n        gl.glRotatef(104.45f\/2, 0, 0, 1);\r\n        gl.glTranslatef(-2.4f, -0.5f, 0);\r\n        gl.glScalef(0.01f, 0.01f, 0.01f);\r\n        glut.glutStrokeCharacter(GLUT.STROKE_ROMAN, 'O');\r\n\r\n        \/\/ idrogeno 1\r\n        gl.glColor3f(0.05f, 0.05f, 0.4f);\r\n        gl.glLoadIdentity();\r\n        gl.glRotatef(a, 1, 1, 1);\r\n        gl.glTranslatef(3, 0, 0);\r\n        glut.glutSolidSphere(0.6f, 72, 36);\r\n        \/\/ lettera H\r\n        gl.glColor3f(0.4f, 0.4f, 0.4f);\r\n        gl.glTranslatef(1, -0.5f, 0);\r\n        gl.glScalef(0.01f, 0.01f, 0.01f);\r\n        glut.glutStrokeCharacter(GLUT.STROKE_ROMAN, 'H');\r\n\r\n        \/\/ idrogeno 2\r\n        gl.glColor3f(0.05f, 0.05f, 0.4f);\r\n        gl.glLoadIdentity();\r\n        gl.glRotatef(a, 1, 1, 1);\r\n        gl.glRotatef(104.45f, 0, 0, 1);\r\n        gl.glTranslatef(3, 0, 0);\r\n        glut.glutSolidSphere(0.6f, 72, 36);\r\n        \/\/ lettera H\r\n        gl.glColor3f(0.4f, 0.4f, 0.4f);\r\n        gl.glTranslatef(1, -0.5f, 0);\r\n        gl.glScalef(0.01f, 0.01f, 0.01f);\r\n        glut.glutStrokeCharacter(GLUT.STROKE_ROMAN, 'H');\r\n\r\n        \/\/ legame 1\r\n        gl.glColor3f(0.4f, 0.4f, 0.4f);\r\n        gl.glLoadIdentity();\r\n        gl.glRotatef(a, 1, 1, 1);\r\n        gl.glRotatef(90, 0, 1, 0);\r\n        glut.glutSolidCylinder(0.15, 3, 24, 10);\r\n\r\n        \/\/ legame 2\r\n        gl.glLoadIdentity();\r\n        gl.glRotatef(a, 1, 1, 1);\r\n        gl.glRotatef(105, 0, 0, 1);\r\n        gl.glRotatef(90, 0, 1, 0);\r\n        glut.glutSolidCylinder(0.15, 3, 24, 10);\r\n        \r\n        \/\/ angolo 104.45\u00b0\r\n        gl.glColor3f(0.4f, 0.4f, 0.4f);\r\n        gl.glLoadIdentity();\r\n        gl.glRotatef(a, 1, 1, 1);\r\n        gl.glRotatef(104.45f\/2, 0, 0, 1);\r\n        gl.glTranslatef(1.2f, -0.25f, 0);\r\n        gl.glScalef(0.005f, 0.005f, 0.005f);\r\n        glut.glutStrokeString(GLUT.STROKE_ROMAN, \"104,45\");\r\n        gl.glTranslatef(0, 75.0f, 0);\r\n        gl.glScalef(0.5f, 0.5f, 0.5f);\r\n        glut.glutStrokeCharacter(GLUT.STROKE_ROMAN, 'o');\r\n\r\n        \/\/ incrementa l'angolo di rotazione di 1\u00b0\r\n        a += 1.0f;\r\n    }\r\n\r\n    @Override\r\n    public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) {\r\n        GL2 gl = drawable.getGL().getGL2();\r\n        GLU glu = new GLU();\r\n\r\n        \/\/ imposta la matrice di trasformazione per la proiezione\r\n        gl.glMatrixMode(GL2.GL_PROJECTION);\r\n        gl.glLoadIdentity();\r\n        glu.gluPerspective(45, (float) w \/ h, 5, 50);\r\n        glu.gluLookAt(0, 0, 15, 0, 0, 0, 0, 1, 0);\r\n\r\n        \/\/ imposta la matrice di trasformazione per gli oggetti\r\n        gl.glMatrixMode(GL2.GL_MODELVIEW);\r\n        gl.glLoadIdentity();\r\n    }\r\n\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>In questo esempio vedremo come utilizzare i materiali per modificare il colore della superficie degli oggetti, come visualizzare del testo e tracciare delle linee. A programma completato sar\u00e0 visibile la molecola di acqua che ruota, cos\u00ec come appare nel video &hellip; <a href=\"https:\/\/liceocuneo.it\/grafica\/materiali\/\">Continua a leggere<span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":70,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-88","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/pages\/88","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/comments?post=88"}],"version-history":[{"count":0,"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/pages\/88\/revisions"}],"wp:attachment":[{"href":"https:\/\/liceocuneo.it\/grafica\/wp-json\/wp\/v2\/media?parent=88"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}