Aller au contenu


Photo
- - - - -

Processing


  • Veuillez vous connecter pour répondre
22 réponses à ce sujet

#1 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 11 septembre 2016 - 04:11

Salut a tous!

 

voila mon "problème" (qui va paraître trivial pour certains):

 

(sous processing donc)

 

Je veux créer plusieurs cercles dans ma fenêtre à différents endroits, mais le truc c'est que des cercles j'en voudrais une bonne centaine et ça m’embêterais de devoir codé chacun d'eux surtout que leurs position est variable.

 

pour un seul il me semble que je peux faire comme ça :


void cercle1(){
  fill(200,0,0);
  smooth();
  ellipse(X,Y,R ,R );
}


mais comment faire pour créer N cercles comme celui ci ? je suppose qu'il y a un moyen non ?

 

 


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#2 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 11 septembre 2016 - 04:24

En imaginant que tu as 3 tableaux d'int qui contiennent les x, les y et les rayons : tabX, tabY, et tabR.

void cercle2(int x, int y, int r) {
  fill(200, 0, 0);
  smooth();
  ellipse(x, y, r, r);
}

for(int i = 0; i<100; i++) {
  int x = tabX[i];
  int y = tabY[i];
  int r = tabR[i];
  cercle2(x, y, r);
}


#3 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 11 septembre 2016 - 04:37

 

En imaginant que tu as 3 tableaux d'int qui contiennent les x, les y et les rayons : tabX, tabY, et tabR.

void cercle2(int x, int y, int r) {
  fill(200, 0, 0);
  smooth();
  ellipse(x, y, r, r);
}

for(int i = 0; i<100; i++) {
  int x = tabX[i];
  int y = tabY[i];
  int r = tabR[i];
  cercle2(x, y, r);
}

                                                                                                                                                                                                                                           j'ai juste pas compris un truc dans : 

 

void cercle2(int x, int y, int r)

 

d'ou viennent ces int, dans le cour que j'ai suivi ils laissent toujours les parenthèses vides ?


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#4 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 11 septembre 2016 - 05:41

En fait j'ai fini par trouver un très bon site qui explique bien mais merci beaucoup des réponses quand même : 

 

https://fr.flossmanu...ing/les-objets/


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#5 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 11 septembre 2016 - 06:18

Houlà ! Attention à ne pas tout confondre !

Si j'ai bien compris, ton problème initial, c'est "comment créer autant de cercles que je veux sans devoir écrire chaque cercle ?". La réponse consiste à utiliser une structure de répétition comme la boucle for.
Cependant, si tu appelles "cercle1" tel que tu l'as écrit dans ton post initial, tu ne vas pas pouvoir changer sa position et sa taille sans modifier X, Y, R (majuscules) qui semblent être des variables globales.
Ce que te proposes Path, c'est de rajouter des arguments à ta fonction : ainsi, tu peux l'appeler avec des valeurs qui changent à chaque fois sans modifier X, Y, R.
Le lien que tu pointes sur les Objets concerne une manière différente de coder ; elle n'est pas obligatoire pour faire ce que tu veux.
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#6 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 11 septembre 2016 - 06:20

exactement mais j'ai utilisé cette méthode : j'ai juste remplacer "cercle" par "bêtes " et ça fonctionne comme Path ma dis : 


bete bete1 = new bete(500, 500);
int nbrbetes = 10;

bete[] Betes = new bete[nbrbetes];

void setup(){
  
  for (int i = 0; i < nbrbetes; i++) {
    Betes[i] = new bete(width/2, height/2);
  }

  smooth(); // on lisse tout ce qui est afficher (aliazing)
size(1000,1000);
}



void draw()
{
fond();
for (int i = 0; i < nbrbetes; i++) {
Betes[i].display();
}

}



void fond(){  
   noStroke(); // pas de contours
  background(0,0,0);
}

class bete { // initialisation de base de la bete 
float x = 500;
float y = 500;

bete (float nouveauX, float nouveauY){
  x = nouveauX + random(-500,500) ;
  y = nouveauY + random(-500,500) ;
}
void display() {
    fill(200,200,200);
    ellipse(x, y, 40, 40);
  }}




 

Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#7 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 11 septembre 2016 - 06:23

et oui je sais pas écrire aliasing  :laugh1: et la première ligne est supprimable aussi


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#8 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 11 septembre 2016 - 06:25

C'est pas plus simple ? :D

void cercle2(int x, int y, int r) {
  fill(200, 0, 0);
  smooth();
  ellipse(x, y, r, r);
}

for(int i = 0; i<100; i++) {
  int x = random(-500, 500);
  int y = random(-500, 500);
  cercle2(x, y, 40);
}


#9 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 11 septembre 2016 - 06:28

hummm pas bête  :poum tchh: 

 

merci  :yes: il y a moyen que tu réécrive mon code avec ta manière pour que je comprenne mieux si cela ne te dérange pas Path ?


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#10 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 11 septembre 2016 - 06:37

du coup j'ai une autre question : est il possible de contrôlé la position de chacune des bêtes de façon indépendante ?  


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#11 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 11 septembre 2016 - 06:44

Alors non, je ne vais écrire ton programme :) Parce que j'ai pas envie mais surtout parce que je ne te rendrai pas service. Mais je peux t'aider à le faire seul. Au passage, il faudra comprendre comme marche une fonction, un objet et ses méthodes.

 

D'abord des cercles, après des bêtes :) Ca a l'air intéressant. Si tu commençais par nous décrire où tu veux en venir.



#12 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 11 septembre 2016 - 07:02

C'est vrai ahah mais ce n'est que la partie graphique et ce n'est absolument pas ce qui m’intéresse  :on_the_quiet:

Je t'explique le projet : je me baladais sur youtube quand je tombe sur ca :

 

 

waooow c'est génial me dis-je après deux trois recherches sur internet a propos des algorithmes génétiques je décide donc d'en faire un moi même dans un but d’apprentissage en plus ça colle avec mon programme d'svt sur la sélection naturelle, problème je ne programme que de l'arduino et le seul IDE que j'ai c'est processing dont je ne connait absolument pas le langage du coup je suis ici et j'en fait appel a vous !

​(j'ai déjà tout ce qu'il me faut sur les réseaux de neurones des bêtes il ne me manque plus que la partie graphique donc)


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#13 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 11 septembre 2016 - 09:14

Voici un petit résumé de ce a quoi j'ai penser: 

 

(c'est assez basique comme réseau donc je ne sais pas si il va fonctionner mais bon ça me semble être correct)     

 

Fichier(s) joint(s)


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#14 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 11 septembre 2016 - 10:51

Wahou ! Le chemin est long entre apprendre à faire une fonction et un réseau de neurones. T'aurais pas sauté quelques cours ? Par hazard. :D



#15 R1D1

R1D1

    Modérateur et Membre passionné

  • Modérateur
  • PipPipPipPipPip
  • 1 211 messages
  • Gender:Male
  • Location:Autriche

Posté 11 septembre 2016 - 11:50

Voici un petit résumé de ce a quoi j'ai penser: 
 
(c'est assez basique comme réseau donc je ne sais pas si il va fonctionner mais bon ça me semble être correct)

Le raisonnement a l'air correct : atteindre une source de nourriture, c'est bien minimiser la distance (euclidienne par exemple) entre la position de ton poisson et la position de ton robot, donc dans un environnement 2D, avoir :

sqrt( (xn - xb )^2 + (yn - yb)^2 ) = 0

Si tu réécris la sortie de ton réseau pour faire apparaître la vitesse du position au lieu de sa position, tu peux même virer tes conditions avec valeur absolue : Delta X = xb - xn, Delta Y = yn - yb
Si la nourriture est à une coordonnée x (resp. y) plus grande que celle du poisson, il doit continuer à augmenter sa coordonnée (donc vitesse positive), et vice-versa.

Sauf que comme tu le vois, ça n'est pas très intéressant à faire apprendre ou évoluer : tu peux trouver la solution à la main.
R1D1 - Calculo Sed Ergo Sum -- en ce moment, M.A.R.C.E.L.
Avatar tiré du site bottlebot

#16 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 12 septembre 2016 - 06:04

Alors effectivement c'est un peut grillé les étapes (meme si bon 2 neurone qui font une adition et une multiplication chacune cest pas trop complexe) mais bon il faut bien un objectif pour apprendre sinon c'est pas drôle ;) de plus je ne suis pas complètement novice en programmation (même si certe l'arduino c'est pas trop dur il fût une époque ou je me débrouiller en python).
Et R1D1 tu as entièrement raison c'est plutôt simple mais je conte complexifier au fur et a mesure (comme dans la vidéo par exemple ou il ajoute une deuxième espèce en concurrence),puis même si c'est simple j'aimerais bien voir comment ça ce débrouille en vrai :)

Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#17 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 12 septembre 2016 - 09:04

En plus la les neurones sont simplifiés au maximum on pourrait tout relier entre eux en espérant un poids de 0 pour revenir au même schéma

Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#18 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 12 septembre 2016 - 03:45

Mais si on ajoute un prédateur P en qu'on fait utiliser aux neurones aussi les liens inutiles  (ceux qui devraient valoir 0 dans l'idéal) on a : 

Et la le code génétique parfait devient plus dur a trouver R1D1 non ?

En plus il va dépendre du critère de sélection : si je favorise de ne pas se faire manger ou de manger le plus possible;  P5 Q5 P6 et Q6 vont varier en fonction de ça (et tendre vers 0 si je favorise de ne pas se faire manger non ? )

 

 

Mais du coup je voudrais savoir si : on peut modifier les actions d'un seul objet de façon indépendante (sans influer sur tout les autres objets) ?

car pour le moment le fait dupliquer mon objet duplique aussi ses actions , qui sont juste "être afficher n'importe ou dans la fenêtre " mais bon quand même imaginons que je veuille contrôlé la position de n'importe lequel sans avoir a bougé tout les autres comment faire ?   

Fichier(s) joint(s)


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#19 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 16 septembre 2016 - 06:36

Salut a tous , 

j'ai fait un début de code de test de mon premier schéma qui me semble fonctionnel le voici :   


Balle maBalle = new Balle(500, 500, color(155,50,52));
int w =800 ;
int v = 500;
Nour nouriture = new Nour(w, v, color(255));

float p1 = random(-5,5);
float p2 = random(-5,5);
float p3 = random(-5,5);
float p4 = random(-5,5);


void setup() {
  smooth(); //Lissage des dessins
  size(1000, 1001); //Taille de la fenêtre
}

void draw() {
  fill(0, 0, 0, 1);
  rect(0, 0, width, height);

  noStroke();

  //Déplacement et affichage de la balle
  maBalle.bouge();
  maBalle.testCollision();
  maBalle.display();
}

class Balle {
  //Déclaration des paramètres de base de la balle
  float x;
  float y;
  float vitesseX; //AJOUT
  float vitesseY; //AJOUT
  color couleur;
 

  //Constructeur de la balle
  Balle (float nouvX, float nouvY, color nouvCouleur) {
    x          = nouvX;
    y          = nouvY;
    couleur    = nouvCouleur;

    vitesseX = w*p1+x*p2 ; //AJOUT
    vitesseY = v*p3+y*p4 ;
   
  }

  //Dessin de la balle
  void display() {
    fill(couleur);
    ellipse(x, y, 40, 40);
    nouriture.display(); 
  }
     
  void bouge() {
   
        vitesseX = w*p1+x*p2 ; //AJOUT
        vitesseY = v*p3+y*p4 ; //AJOUT
        
        
if (vitesseX-abs(vitesseX)<0){
 x--; 
}
if (vitesseX-abs(vitesseX)==0){
 x++; 
}
if (vitesseY-abs(vitesseY)<0){
 y--; 
}
if (vitesseY-abs(vitesseY)==0){
 y++; 
}

   
  }
  
 
  
  

  void testCollision() {
    //Si la balle touche une mur, elle rebondit
    if (x > width-20 || x < 20) {
      vitesseX = vitesseX * -1;
    }
    if (y > height-20 || y < 20) {
      vitesseY = vitesseY * -1;
    }
  }}

  class Nour {
  //Déclaration des paramètres de base de la balle
  float z;
  float q;
  color couleur2;

  //Constructeur de la balle
  Nour (float nouvz, float nouvq, color nouvCouleur2) {
    z          = nouvz;
    q          = nouvq;
    couleur2    = nouvCouleur2;
  }

  //Dessin de la balle
  void display() {
    fill(couleur2);
    ellipse(z, q, 40, 40);
  }
}

on peut voir que si on remplace les p1 p2 p3 p4 par 1;-1;1-1 tout marche comme prévu et c'est plutôt cool (essayez) ;

maintenant le problème c'est que la il n'y a que une bette et une nourriture auriez vous des pistes pour en créer une dizaine voire une centaine simultanément ?  


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 


#20 yougo

yougo

    Habitué

  • Membres
  • PipPip
  • 235 messages

Posté 31 octobre 2016 - 06:49

Salut a tous !!!

Je poste ici après une lonnnngue absence  juste pour dire que j'ai commencer à coder l'algo après un apprentissage du java plus poussé [j'ai déjà beaucoup avancé enfaîte il ne reste que la partie graphique et 2/3 trucs ce sera surement fini dans quelques mois] 

je vais surement faire un petit sujet explicatif maintenant que je maîtrise (beaucoup) mieux le JAVA  si ça vous intéresse même si je ne suis pas sur que cela colle avec la robotique (quoique il y a bien des applications avec des robots notamment pour leur apprendre a marcher  [les MAKERS de robots bipèdes pourront témoigné de la galère , j'ai moi même tester c'est très difficile et long ]) 

 

voila voila c’était juste pour dire que ça avance de mon coté  !

a bientôt  :bye:  


Venez check le Twitter : 

 

https://twitter.com/Projet_WALK_E

 





0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users