Numérique

Pythagone v2

J’ai enfin pris de temps d’avancer sur Pythagone.
Le site a maintenant un nom de domaine tout neuf et bien à lui : www.pythagone.net !

 

J’ai donc ajouté deux nouveaux outils :

  • le triangle quelconque, qui permet, à la manière du premier outils triangle rectangle, de calculer toutes les valeurs possibles d’un triangle quelconque en fonction de celles fournis par l’utilisateur, dès qu’il y en a suffisamment, tout ça grâce au théorème d’Al-Kashi et à la trigonométrie. Ce dernier m’a donné vraiment du fil à retordre! Effectivement Al-Kashi est quand même un niveau de complexité au dessus, certaines possibilités pouvant ouvrir à deux solutions possibles, sans compter les conditionnelles qui sont ici beaucoup plus nombreuses et enchevêtrés les unes dans les autres… mais ouf! le voilà! Disponible ici.
  • Pyramide, qui permet de calculer la longueur des cotés du triangle des faces et les angles de coupes nécessaires pour la construction d’une pyramide régulière, avec le nombre de face, la hauteur et le rayon de sa base définit par l’utilisateur. Une représentation graphique à l’échelle de la pyramide est générée sur la page. Les longueurs des cotés permettent de tracer les triangles des faces et les angles données sont les réglages machines nécessaire le long de ces cotés (90° – la valeurs théorique). La démonstration du calcule est décrite en haut à gauche et le passage de la souris sur chaque formule permet de comprendre dans quel triangle on se trouve sur la représentation graphique. Disponible la.

 

Autres améliorations diverses :

  • Refonte de l’affichage menu.
  • Amélioration de la présentation des erreurs pour rendre l’utilisation la plus intuitive possible.
  • Amélioration de l’affichage sur différents formats d’écran, mais je ne dispose pas vraiment d’une collection complète de smartphone donc n’hésitez pas à me faire des retours.
  • Amélioration du référencement. (Google sait que le site existe!)
  • Le Gitlab est maintenant à jour ici. Le code n’est surement pas le plus rigoureux qui existe, ni le plus fluide, mais j’ai fait de mon mieux et essayé un maximum de le commenter, pour qu’il soit le plus claire possible aux yeux curieux.

 

Vous pouvez créer un raccourcis direct sur l’écran d’accueil de votre smartphone sur toutes les plateformes. Vous trouvez des explications pas-à-pas en ouvrant les liens suivant, pour Android : Firefox, Chrome, ou pour iOS : Safari.

L’url www.pythagone.net ne dispose pas de SSL, vous devez donc y accéder via http:// (sans le S!), en revanche si votre navigateur ne l’accepte pas vous pouvez utiliser directement l’url https://pythagone.fredericpavageau.net/  (qui est de toute manière la redirection normal du premier).

En cas de bug, si vous pensez à une amélioration ou si vous souhaitez juste donner votre avis, n’hésitez pas à passer par la ou me contacter.

Les prochaines évolutions devraient sûrement concerner des calculateurs de résistance des matériaux ou structure, mais pour le moment rien de bien concret, mais partagez vos idées!
L’affichage me pose encore problème, car mon premier parti pris était d’adapter l’affichage au format d’écran horizontal, mais dans ce cas l’apparition du clavier sur smartphone cache une grosse partie de la page, et s’avère assez chiant à utiliser, donc peut être que finalement une futur évolution devrait se porter sur une meilleur lisibilité vertical.

Profitez!

Pythagone

J’ai programmé récemment Pythagone, une petite application web en javascript pour mes amis constructeurs et autres bidouilleurs qui permet d’utiliser rapidement le théorème de Pythagore et la Trigonométrie, en me faisant la réflexion qu’il est toujours un peu fastidieux de se souvenir de « SohCahToa » (Ou « CahSohToa », pour les plus agressifs d’entre nous) et de l’appliquer quand on a besoin, dans le speed, dans la vrai vie.

L’idée est donc de centraliser en une page web, simple d’utilisation et atteignable du plus large panel de périphériques possible, la résolution de problèmes de trigonométrie dans un triangle rectangle. Les inconnus sont donc automatiquement complétés, dès que suffisamment d’arguments le permettent. Dans la foulée, j’y ai ajouté un outil pour calculer les angles de coupes et longueurs de contreventements. J’ai tenu à donner à voir facilement les formules et les méthodes de résolution, pour ceux qui n’y seraient pas familiers, ou voudraient réviser un peu. D’autres sont encore à venir, comme la trigonométrie dans le triangle quelconque, Thalès, les pyramides ou encore les béquilles de décors.

Tout ça se passe librement sur pythagone.fredericpavageau.net et le Code Source est disponible sur framagit par la, pour les curieux et ceux que ça intéresse.

Une mention spéciale à tout ceux qui apprécierons le logo à sa juste valeur!

N’hésitez pas à commenter, déclarer des erreurs et/ou des bugs, suggérer des évolutions ou les coder, mais surtout à l’utiliser et à en profiter!

Triptyque : Perversion (L’Origine du monde)

IMG_7946

Un dimanche 10 mai teinté de répression, j’ai présenté le tryptique Perversion (L’Origine du monde) #001, composé de Perversion (-128,-158,L’Origine du monde), Perversion (-23,-77,L’Origine du monde) & Perversion (6,125,L’Origine du monde). Trois tableaux de glitch de l’Origine du monde de Gustave Courbet, en triptyque devant une toile du graffeur Bebar, pour l’exposition Culture de Paix à Vitry-sur-seine.

La liberté d’expression n’est elle pas la liberté d’utiliser et de modifier nos chefs d’œuvres à notre guise? Le droit d’auteur ne serait il pas une barrière à la liberté d’expression, sachant que toutes œuvre est issue, inspiré ou au moins influencé par l’histoire de l’Art? La véritable paix ne serait elle pas de laisser vivre toutes formes d’Art, de folie, de jugement et d’opinion? Au lieu d’être un moment d’inactivité sans danger, ne serait elle pas plutôt ce moment d’émulsion, voir même de conflits, mais d’échange, où toutes les formes d’expressions ou de réappropriation sont autorisées dans un monde qui l’entend, le voit, l’écoute et le regarde?

L’idée étant de remettre au goût du jour une peinture de Gustave Courbet au travers d’un traitement numérique, soit la série perversion, un programme qui génère des erreurs dans des images, tel le plus simple des chiffrement en intervertissant deux données (bytes) tout le long d’un fichier d’image Jpeg. Comme pour réactualiser des questionnement toujours contemporain d’un pilier de l’histoire de l’Art dans notre sphère numérique.

S’en dégage une esthétique onirique mystérieuse, mi bordélique, mi épurée, dans laquelle on peut farfouiller, explorer, rechercher ou simplement admirer son abstraction.

La force de cette nouvelle représentation étant la manière de modifier et cacher l’image réaliste et figurative de son modèle original, comme un contre pied de cette importance de l’image et de son discours évident, comme une manière de pousser le spectateur à aller chercher son intérêt propre, son imagerie propre, et laisser divaguer son imagination dans cette nouvelle représentation devenue semi-abstraite, ouvrant la porte à des interprétations inattendues.

A l’heure où nos données personnelles sur le réseau sont mises à mal jusque dans notre intimité, autorisons nous à torturer librement du bytes en pagaille à grands coups de randomisation dans du Chef-d’œuvre de poids, afin d’illustrer librement le bordel du flux sensible qui nous entoure dans toute sa complexité à l’époque du partage universelle et de la réappropriation généralisée.

Cette démarche de destruction aléatoire, non maitrisée, est une métaphore de la perte, de la réutilisation et de l’évolution de nos données personnelles et parfois intime dans le monde numérique contemporain qui nous échappe. Le monde numérique n’a pas de propriétaire.

 

PS : Les photos seront mises à jours dans peu de temps.

Hide [Gaïa] #002

Hide [Gaïa] #002, Vidéos sur moniteurs, 2014

Hide [Gaïa] #002 | Vidéos sur moniteurs, 2014, Paris.

Voici quelques photos de l’installation de Hide [Gaïa] à l’expo faite maison, une version plus fournie que celle présenté lors de fragilité au donjon de maîtresse Cindy.

Cette installation vidéo a poussé dans les écrans d’une colocation fertile à Gambetta, c’est une respiration infinie dans un espace commun, un flux flou en constante déformation, à la recherche d’une beauté neutre et universelle en mouvement.

Hide est un processus de malcompression picturale, à l’opposé de la compression seul les parties fertiles de l’image y sont généralisées et cachés, ne laissant transparaître plus que les détails fin et réguliers de l’image.

 

Pour faire une impressions ou planter une vidéo dans vos écrans salon, n’hésitez pas à me contacter.

Ci-dessous le code source Processing donnant naissance à ces images. Attention ce code permet de traiter plusieurs fichiers d’affilés, de type Nomdufichier00X.jpg, qu’il faut ensuite monter ensemble pour donner une vidéo.

/**
 * Title : Hide vidéo v2
 * Author : Frédéric Pavageau
 * Website : www.fredericpavageau.net
 * Contact : fredericpavageau@gmail.com
 * Date : 11/12/2014
 */

// Sequence d'images
int Seqmin=1; // Première image
int Seqmax=1; // Dernière image

// Paramètres de compression
int umin = 4; // Dimension minimum des carrés de compression
int umax = 256; // Dimension maximum des carrés de compression
float t = 1.25; // Taux de compression, minimum de différence par pixel pour généraliser, Plus la valeur est basse et plus l'image sera compressé
float c = 0.435; // multiplicateur de t, plus il est grand au dessus de 1 moins les grand carré seront fort, entre 0 et 1 plus il est faible plus les grand carré serons importants
float tfirst = t;

// Image
String im;
String filename = "Nomdufichier";
String extension = ".jpg";
int nb0 = 3; // nombre de chiffres au total dans le nom du fichier (zéro compris)

// Variables de calcule
int i = 0; // Incrément
float T; // Variable différence Total Max-Min couleurs par carré
float tparticulier; // t adapté proportionnellement aux zones particulières/tronqués

// Coordonnées
int x = 0;
int y = 0;
int x0 = 0;
int y0 = 0;

// Variables
float Rmax = 0;
float Vmax = 0;
float Bmax = 0;
float Rmin = 0;
float Vmin = 0;
float Bmin = 0;
// Pixel total
int pt = 0;
// Couleurs
float R = 0;
float V = 0;
float B = 0;
// Couleurs Total
float Rt = 0;
float Vt = 0;
float Bt = 0;
// Couleurs de la cellule
int Rmoy = 0;
int Vmoy = 0;
int Bmoy = 0;
float CC;

PImage[] img = new PImage[Seqmax-Seqmin+1];
  
void setup() {
for (int Seq = Seqmin; Seq <= Seqmax; Seq++) { // Loop de fichier
  String StringSeq = ""+Seq;    // Calcule du nombre de zero necessaire dans le numero du fichier
  int nbchiffre = StringSeq.length();
  int nbdezero = nb0 - nbchiffre;
  String Seqfile = ""+Seq;
  for (int zero=0; zero<nbdezero; zero++) {    // Ecriture du nb de zero a completer dans la variable Seqfile
    Seqfile = "0"+Seqfile;
  }
  String im = filename+Seqfile+extension;
  img[i] = loadImage(im);
  i++;
}
  size(img[0].width,img[0].height);
  i=0;
}

void draw() {
  noLoop();
  for (int Seq = Seqmin; Seq <= Seqmax; Seq++) {  // Loop de fichier
    String StringSeq = ""+Seq;    // Calcule du nombre de zero necessaire dans le numero du fichier
    int nbchiffre = StringSeq.length();
    int nbdezero = nb0 - nbchiffre;
    String Seqfile = ""+Seq;
    for (int zero=0; zero<nbdezero; zero++) {  // Ecriture du nb de zero a completer dans la variable Seqfile
      Seqfile = "0"+Seqfile;
    }
    String im = filename+Seqfile;  
    image(img[i], 0, 0);
    t = tfirst;
    for (int u = umin; u <= umax; u = u*2) {
      for (int x = 0; x < img[i].width; x = x+u) {
        for (int y = 0; y < img[i].height; y = y+u) {
          float Rt = 0;
          float Vt = 0;
          float Bt = 0;
          Rmax = Rmin = red(get(x,y));
          Vmax = Vmin = green(get(x,y));
          Bmax = Bmin = blue(get(x,y));
          pt = 0;
          for (int x0 = x; (x0 < x+u) && (x0 < img[i].width); x0++) {
            for (int y0 = y; (y0 < y+u) && (y0 < img[i].height); y0++) {
              R = red(get(x0,y0));
              V = green(get(x0,y0));
              B = blue(get(x0,y0));
              Rt = Rt+R;
              Vt = Vt+V;
              Bt = Bt+B;
              Rmax = max(R,Rmax);
              Vmax = max(V,Vmax);
              Bmax = max(B,Bmax);
              Rmin = min(R,Rmin);
              Vmin = min(V,Vmin);
              Bmin = min(B,Bmin);
              pt = pt+1;
            }
          }
          T = ((Rmax-Rmin)+(Vmax-Vmin)+(Bmax-Bmin))/pt; // Calcule de l'Amplitude de différence par pixels
          println(T);
          if(pt < (u*u)) {
            println(u*u+"="+pt+" "+T);
            tparticulier = t*((u*u)/(pt));
            if(T > tparticulier) {
              int Rmoy = round(Rt/pt);
              int Vmoy = round(Vt/pt);
              int Bmoy = round(Bt/pt);
              color CC = color(Rmoy,Vmoy,Bmoy);    
              fill(CC);
              noStroke();
              rect(x,y,u,u);
            }
          }
          else {
            if(T > t) {
              int Rmoy = round(Rt/pt);
              int Vmoy = round(Vt/pt);
              int Bmoy = round(Bt/pt);
              color CC = color(Rmoy,Vmoy,Bmoy);    
              fill(CC);
              noStroke();
              rect(x,y,u,u);
            }
          }
        }
      }
      t = t*c;
    }
    save("Out/"+filename+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+"/"+im+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+".jpg");
    println("Saved in : Out/"+filename+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+"/"+im+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+".jpg");
    i++;
  }
  i=0;
}

Imaging (Amour) #001 #002

 

C’est difficile de parler d’Amour, le comprendre, le voir. Alors j’ai décidé d’essayer de tripoter du texte d’Amour en hexadécimal, pour voir à quoi ressemblerais une image formée de tous ces mots.

Voici donc comment l’algorithme de décodage JPG comprend une lettre d’amour en 16/9 ème.

Imaging (Amour) #001.

Imaging (Amour) #001 | Fichier numérique modifié, 2014.

Ou un fil d’échanges numériques ordinaires mais attentionnées sur plusieurs années.

Imaging (Amour) #002

Imaging (Amour) #002 | Fichier numérique modifié, 2014.

Le redimensionnement PHP ajoute des choses un peu bizarre aux miniatures.

L’affichage dépend également de votre appareil et de votre navigateur, essayez.

@

Flaw [Self-Portrait] #001

Flaw [Self-Portrait] #001 | Dents sur panneau de plexiglas encadré, 72 x 83 cm, 2012, Paris.

Tableau issue d’une collection de dents de sagesses, s’amusant à entremêler les codes : numériques (L’image pixelisée), génétiques (Le défauts récurrent & archaïque de la dent de sagesse chez l’homme), artistiques (Le portrait, le cadre lourd) et symboliques (La dent de « sagesse », le visage, l’expression). Présenté en 2012 à l’Atelier CMH de Bordeaux, lors du Bazar Bizar de Guilux, et à effleurer en vidéo sur youtube ici.

Ce projet a vu le jour grâce à la participation d’Aneymone Wilhelm, Pierre Lapin (Photo du portrait original), mais aussi Alexandre Moyard, Hugo de Oliveira, Anne Dolorez Pineau, Daniel Varotto Couto, Edouard Sufrin, Véronique Lorne, Pierre Gris, Douglas Cavanna, Sebastien Pavageau et Vincent Pradel, ainsi que les généreux donneurs de dents.

 

 

@