View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Outils > Processing

Processing – 3D : Test des repères 3D dans Processing.

Explication

  • Ce programme extrait les matrices 4x4 de transformation 3D attachées aux différents repères 3D par défaut dans Processing.

Matériel et configuration utilisés

  • PC Intel Core Quad 2.33 Ghz
  • Ubuntu 10.04 LTS
  • Processing 1-5
  • opengl

Ressources utiles

Le programme


// Programme processing
// généré avec le générateur de code Processing
// du site www.mon-club-elec.fr
// par X. HINAULT - tous droits réservés

// Programme écrit le : 24/1/2012.

// ------- Licence du code de ce programme : GPL v3-----
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License,
//  or any later version.
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.

/////////////// Description du programme ////////////

// ce programme étudie les repères 3D par défaut associés à Processing.

// XXXXXXXXXXXXXXXXXXXXXX ENTETE DECLARATIVE XXXXXXXXXXXXXXXXXXXXXX

// inclusion des librairies utilisées

import processing.opengl.*; // pour rendu 3D avec la librairie OPenGL

// déclaration objets

// déclaration variables globales

//------ déclaration des variables de couleur utiles ----
int jaune=color(255,255,0);
int vert=color(0,255,0);
int rouge=color(255,0,0);
int bleu=color(0,0,255);
int noir=color(0,0,0);
int blanc=color(255,255,255);
int bleuclair=color(0,255,255);
int violet=color(255,0,255);


// variable pour la taille de la capture video
int widthCapture=320; // largeur capture
int heightCapture=240; // hauteur capture
int fpsCapture=20; // framerate (image/secondes) pour la capture video


// XXXXXXXXXXXXXXXXXXXXXX  Fonction SETUP XXXXXXXXXXXXXXXXXXXXXX

void setup(){ // fonction d'initialisation exécutée 1 fois au démarrage

        // ---- initialisation paramètres graphiques utilisés
        colorMode(RGB, 255,255,255); // fixe format couleur R G B pour fill, stroke, etc...
        fill(0,0,255); // couleur remplissage RGB - noFill() si pas de remplissage
        stroke (0,0,255); // couleur pourtour RGB - noStroke() si pas de pourtour
        rectMode(CORNER); // origine rectangle : CORNER = coin sup gauche | CENTER : centre
        imageMode(CORNER); // origine image : CORNER = coin sup gauche | CENTER : centre
        ellipseMode(CENTER); // origine cercles / ellipses : CENTER : centre (autres : RADIUS, CORNERS, CORNER
        //strokeWeight(0); // largeur pourtour
        frameRate(30);// Images par seconde - The default rate is 60 frames per second

        // --- initialisation fenêtre de base ---
        size(640, 480, OPENGL); // ouvre une fenêtre xpixels  x ypixels
        background(0,0,0); // couleur fond fenetre



// --- initialisation des objets et fonctionnalités utilisées ---

PMatrix3D currrentSyst3D=null; // déclare objet matrice 4x4


} // fin fonction Setup

// XXXXXXXXXXXXXXXXXXXXXX Fonction Draw XXXXXXXXXXXXXXXXXXXX

void  draw() { // fonction exécutée en boucle

        background(0); // efface le fond

        perspective();
        //ortho();

        // affiche le repère 3D par défaut -----

        println("Repère initial par défaut");
        printMatrix();

        //drawCurrentSyst3D();

        float deltaZ=(height/2)/ tan(radians(30)); // 30 car

        println ("deltaZ= (height/2.0) / tan(radians(30)) =" + deltaZ);        

        // affiche le repère 3D par défaut centré  -----

        translate(width/2, height/2, 0);
        //drawCurrentSyst3D();

        println("Repère initial par défaut centré ");
        printMatrix();


         // affiche le repère 3D absolu 0,0,0  -----


        //translate(0, 0, deltaZ); // "recule" de deltaZ
        resetMatrix(); // effet idem.. se place en 0,0,0 avec aucune rotation
        //drawCurrentSyst3D();

        println("Repère 0,0,0 ");
        printMatrix();


        //---- repère 3D Near --- cf perspective
        translate(0, 0, -deltaZ/10); // avance de deltaZ/10 - avant cette position rien ne s'affiche

        //drawCurrentSyst3D();

        println("Repère Near en deltaZ/10 ");
        printMatrix();

        //---- repère 3D Far --- cf perspective
        resetMatrix(); // se replace en 0,0,0 avec aucune rotation
        translate(0, 0, -deltaZ*10); // avance de deltaZ*10 - après cette position rien ne s'affiche

        //drawCurrentSyst3D();

        println("Repère Far en deltaZ/10 ");
        printMatrix();


        //---- repère mobile --- // - désactiver if (frameCount>1)
        resetMatrix(); // se replace en 0,0,0 avec aucune rotation
        //translate(-width/2, -height/2, -frameCount*5); // avance de 1
        translate(0, 0, -frameCount*5); // avance de 1

        drawCurrentSyst3D();

        println("Repère mobile en Z= " + (-frameCount*5));
        printMatrix();


        //if (frameCount>1) noLoop(); // stoppe draw après 2ème passage    





//while(true); // stoppe boucle draw

} // fin de la fonction draw()

// XXXXXXXXXXXXXXXXXXXXXX Autres Fonctions XXXXXXXXXXXXXXXXXXXXXX

// fonction dessinant le repère 3D courant

void drawCurrentSyst3D() {

       //--- affichage du repère 3D 0x, 0y, 0z courant = ici le repère de base
      stroke(255,0,0);
      line (0,0,0, height/2,0,0); // axe des x

      stroke(0,255,0);
      line (0,0,0, 0,height/2,0); // axe des y

      stroke(0,0,255);
      line (0,0,0, 0,0,height/2); // axe des z

      noFill();
      box(height/4);

}

/*
//--- fonction affichant la matrice 3D courante -- utiliser aussi printMatrix()

void printPMatrix3D(PMatrix3D syst3D) {

      println ("--- Matrice 4x4 du système 3D  ---");
     println ( "| " +  syst3D.m00 + " " +  syst3D.m01 + " " +  syst3D.m02 + " " +  syst3D.m03 + " " +  " |"); // affiche valeur matrice - voir PMatrix3D
     println ( "| " +  syst3D.m10 + " " +  syst3D.m11 + " " +  syst3D.m12 + " " +  syst3D.m13 + " " +  " |"); // affiche valeur matrice - voir PMatrix3D
     println ( "| " +  syst3D.m20 + " " +  syst3D.m21 + " " +  syst3D.m22 + " " +  syst3D.m23 + " " +  " |"); // affiche valeur matrice - voir PMatrix3D
     println ( "| " +  syst3D.m30 + " " +  syst3D.m31 + " " +  syst3D.m32 + " " +  syst3D.m33 + " " +  " |"); // affiche valeur matrice - voir PMatrix3D

}

*/


//XXXXXXXXXXXXXXXXXX Fin du programme XXXXXXXXXXXXXXXXX