/* Alors petit programe du jour: * On a une liste de point. * On l'affiche a l'ecran. * on format une chaine de charactere pour l'afficher avec le laser * * On definie des courbe de bezier * On affiche un tunnel * Il faudra un truc pour definir * * === * Il nous faut une structure de segment [{pos_x, pos_y, color}, {pos_x, pos_y, color}] * Un tableau de * */ Point[] c1, c2, c3, c4; LaserOut laser_frame; // evite de metre un nombre de point negatif Point[] create_circle(float center_x, float center_y, float radius, int nb_point, int col) { Point[] line = new Point[nb_point + 1]; int i; for (i = 0; i < line.length; i++) { float px, py, factor; factor = float(i) / float(line.length - 1); px = center_x + radius * cos(factor * TWO_PI); py = center_y + radius * sin(factor * TWO_PI); line[i] = new Point(int(px), int(py), col); } return (line); } void setup() { size(800, 800); background(255); // ... // circle = create_circle(400, 400, 70, 25); laser_frame = new LaserOut(); //////////// int rad, radm, nb_point; float cx, cy; nb_point = 25; rad = 40; radm = rad / 2; cx = 400; cy = 400; c1 = create_circle( cx, cy, rad, nb_point, getColInt(255, 255, 255)); c2 = create_circle(cx - radm, cy - radm, rad, nb_point, getColInt( 0, 255, 0)); c3 = create_circle(cx + radm, cy - radm, rad, nb_point, getColInt( 0, 0, 255)); c4 = create_circle( cx, cy + radm, rad, nb_point, getColInt(255, 0, 0)); } int getColInt(int r, int g, int b) { int col; col = ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | ((b & 0xFF)); return (col); } void draw(){ // ajoute une chaine de charactere a la frame + dessine sur processing laser_frame.add_line(c1); laser_frame.add_line(c2); laser_frame.add_line(c3); laser_frame.add_line(c4); laser_frame.print_frame(); }