Partage
  • Partager sur Facebook
  • Partager sur Twitter

Atelier Cod'Art

5 juillet 2007 à 14:50:26

Image utilisateurImage utilisateurImage utilisateur

Mes trois derniers. ils sonts quasi similaires aux trois premiers, sauf qu'il y a utilisation du sin & cos ...
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 15:09:45

C'est très beau tout ces dessins, mais je comprend rien du tout, vous pouriez pas expliquer comment on procede dans un tuto ou sur ce topic 6
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 15:12:51

salut

bah, en ce qui me concerne, je fait ca pixel a pixel suivant des algos différents. pour une map logique par exemple, tu scanne toute la surface de travail et tu donne au pixel scanné la couleur résultante d'une opération logique entre x et y ...

++
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 15:17:59

Tix. : Je trouve que ton premier dessin du post de 14 H50 est bien mais les autres osnt fait un peu... au hasard. Je ne trouve pas les deux autres superbes.
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 15:19:02

Tix > tu pourrais fournir ton code ?
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 15:27:32

Bluestorm, je l'ai déjà mis ;)

(dailleur, je le met a jour, j'y ai fait une couille)

ironzorg, merci ^^
bah, non, il ne sont pas plus fait au hasard que ca, une spirale (intrepolation du cos(i)*i[*factopt] et du sin pareillement traités, et effet dessus (grossissement du point OpenGL, changement de parametres)

++ Tix.
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 16:29:04

C'est la formule de bluestorm qui m'a donné l'idée ;) Je peux obtenir plein d'image différente, mais il n'y a pas une goutte d'aléatoire.

Image utilisateur

Image utilisateur

Image utilisateur

Image utilisateur

Chaque image peut-être fait en couleur ou en noir et blanc. Ce ne sont QUE des pixels, entièrrement fait avec PHP. Voilà le coeur du script noir et blanc :

$taille_image = 500;
$nombre1 = 450;
$nombre_additione = 150;
$image = imageCreateTrueColor($taille_image, $taille_image);

$blanc = imageColorAllocate($image, 255, 255, 255);
$noir = imageColorAllocate($image, 0, 0, 0);
imageFilledRectangle($image, 0, 0, $taille_image, $taille_image, $blanc);

for ($x = 0; $x < $taille_image; $x++)
{
        for ($y = 0; $y < $taille_image; $y++)
        {
                if (($x*$y)%$nombre1 == $nombre1%($x+$nombre_additione)
                                OR ($x*$y)%$nombre1 == $nombre1%($y+$nombre_additione)
                                OR (($taille_image-$x)*($taille_image-$y))%$nombre1 == $nombre1%($taille_image-$x+$nombre_additione)
                                OR (($taille_image-$x)*($taille_image-$y))%$nombre1 == $nombre1%($taille_image-$y+$nombre_additione))
                {
                        imageSetPixel($image, $x, $y, $noir);
                }
        }
}


$nombre1 et $nombre_additionne permettent d'obtenir une infinité de forme ;) !

Notez que c'est ma première réalisation en Cod'art, et pour une première, j'en suis assez satisfait ^^ !

  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 16:30:05

Si vous avez des créations se rapportant au triangle de Sierpinski (c'est pas mal pour commencer, parce que relativement facile), allez les poster sur ce topic, merci. :)
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 16:34:50

Dans le genre facile à faire pour les débutants, il y a des carrés imbriqués à l'infini, aussi :
Image utilisateur

(bon bien sûr c'est plus beau quand c'est plus grand et tout, enfin, bref)
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 16:45:48

Salut les zéros. Je voudrais juste avoir une explication sur quelquechose qui me paraît bizarre. bluestorm nous dit un peu plus haut que 2*4 = 1%7 et que 3*5 = 1%7. On a donc 2*4 = 3*5 ?? bizarre ...

euh non en fait, c'est sur la page précédente :X
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 16:53:28

hehe, il faut bien comprendre le sens du modulo (% en pHp, c++,...)

5 modulo 3 = 2 car le reste de la division de 5 par 3 est 2
8 modulo 11 = 8 car le reste de la division de 8 par 11 est 8

ainsi:

2*4 = 8 = 1 modulo 7 car la division de 8 par 7 donne 1
3*5 = 15 = 1 modulo 7 car la division de 15 par 7 donne 1

cependant 8 n'est pas égal à 15
  • Partager sur Facebook
  • Partager sur Twitter
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
5 juillet 2007 à 16:54:19

Voila mes créations :

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur

Le code, il suffit de faire varier les opérations pour le choix des trois couleurs, par exemple x*y,x*y,x*y vous donneras la meme figure que knarf2, a vous d'experimenter ^^


# include <stdio.h>
# include <stdlib.h>
# include <SDL/SDL.h>
# include <math.h>

void pause()
{
    int continuer = 1;
    SDL_Event event;

    while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = 0;
        }
    }
}



int main ()
{
SDL_Surface *pixel=NULL, *ecran=NULL;
SDL_Rect position;
int x,y;
position.x=0;
position.y=0;
if (SDL_Init(SDL_INIT_VIDEO)==-1)                           
{
fprintf(stderr,"Erreur d'initialisation de la SDL");
exit(EXIT_FAILURE);
}
ecran=SDL_SetVideoMode(510,510,32,SDL_HWSURFACE);
if (ecran==NULL)
{
fprintf(stderr,"Erreur d'inialisation du mode vidéo %s",SDL_GetError());
exit(EXIT_FAILURE);
}
pixel=SDL_CreateRGBSurface(SDL_HWSURFACE,1,1,32,0,0,0,0);
for (y=1;y<510;y++)
for (x=0;x<510;x++)
{
position.x=x;
position.y=y;
SDL_FillRect(pixel,NULL,SDL_MapRGB(ecran->format,x%y,x%y,x%y));
SDL_BlitSurface(pixel,NULL,ecran,&position); 
}
SDL_Flip(ecran);
pause();
SDL_FreeSurface(pixel);
SDL_Quit;
return 0;
}



  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 17:18:37

Post déplacé à l'endroit approrié: Topic dédié aux tiangles de Sierpinski
  • Partager sur Facebook
  • Partager sur Twitter
Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
5 juillet 2007 à 17:54:22

Citation : Nanoc

Je vous propose un petit triangle de Sierpinski en SDL (C++) [...]


Nanoc, tu pourrais (re)poster sur le topic adapté, c'est-à-dire [Cod'Art] Triangle de Sierpinski ? :)
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 17:59:40

Ça marche pour Furzel aussi : pour les histoires de Sierpinski, allez dans le nouveau topic de Cygal, ça permettra d'organiser un peu mieux le truc.

Pour les fractales de Sierpinski, allez poster dans le topic dédié, cela facilitera l'organisation


Si vous voyez une autre catégorie qui mériterait une place à part, n'hésitez pas à le signaler.
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:03:17

Citation : Nanoc

15 par 7 donne 1



15 par 7 ça fait 2 ... c'est 15%7 qui vaut 1. pour ce qui est de 8/7, aucun problème ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
5 juillet 2007 à 18:04:45

Mon ensemble de Mandelbrot, un peu basique aussi et sans couleurs:

open Graphics;;
(* Dessine un ensemble de Mandelbrot *)
(* Prend en paramètre la taille de l'écran et deux constantes (hyper sensibles) *)
let mandelbrot taille a b =
  (* Définit si fait partie de l'ensemble ou pas, et choisit la couleur en conséquence *)
  let couleur x y =
    let norme x y =
      let rec norme acc x y =
        if x *. x +. y *. y > 1000. then acc
        else if acc > 256 then 0
        else norme (acc+1) (x *. x -. y *. y +. a) (2. *. x *. y +. b)
  in norme 0 x y
    in
    let c = (norme x y) * 20 in
      rgb c c c
  in
    (* Vérifie tous les points, les colorie *)
    for x = 0 to taille - 1 do
      for y = 0 to taille - 1 do
        let x2 = 4. *.  float_of_int (x - taille / 2) /. (float_of_int (taille))in
        let y2 = 4. *. float_of_int (y - taille / 2) /. (float_of_int (taille)) in
        set_color (couleur x2 y2);
        plot x y
      done
    done
;;
auto_synchronize false;
open_graph " 800x800";
mandelbrot 800 0.29 (-0.45);
(* Sync l'affichage *)
synchronize ();
(* Pause *)
ignore (read_key ());;
 

Image utilisateur
Amusez vous à modifier a et b :p (les deux constantes)
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:13:57

trois autres petits tests ^^

Image utilisateurImage utilisateurImage utilisateur

ceux ci sont directements inspirés des premiers. seul les parametres d'interpollation des couleurs changent. ainsi, les deux premiers se sont vus ajoutés une opération logique, et le troisieme, une opération utilisant le cos& sin.

voilà un mix que je trouve pas mal :
Image utilisateurImage utilisateur
code :
/*******************************************************************************
Titre :         Effet graphique en C avec OpenGL
Sous titre :             BitMAP Logique

By Tix.                                                     tixlegeek@gamil.com
http://www.tixlegeek.sup.fr                               (c) TRANSISTERIX 2007
*******************************************************************************/

#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
#define pi 3.14159265358979323846
#include <math.h>


typedef struct COLOR {
    GLbyte r;
    GLbyte v;
    GLbyte b;
} COLOR ;

/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
/*::  This function converts decimal degrees to radians             :*/
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
double deg2rad(double deg) {
  return (deg * pi / 180);
}

/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
/*::  This function converts radians to decimal degrees             :*/
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
double rad2deg(double rad) {
  return (rad * 180 / pi);
}

void assign(COLOR *variable, GLbyte r, GLbyte v, GLbyte b)
{
    variable->r = r;
    variable->v = v;
    variable->b = b;
}

int main(int argc, char *argv[])
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_WM_SetCaption("Fractal ?",NULL);
    SDL_SetVideoMode(255, 255, 32, SDL_OPENGL);
    // Definitions de l'environnement //
    gluOrtho2D(255,0,255,0);
    glPointSize(2);
    //********************************//
    bool continuer = true;
    SDL_Event event;
    double i;
    COLOR pixelcolor;
    int x,y;

        glClear(GL_COLOR_BUFFER_BIT);
        glBegin(GL_POINTS);

            for(x=0; x<=255; x++)
            {
                for(y=0; y<=255; y++)
                {
                    i++;
                    assign(&pixelcolor,y|x&42,x|y&42,int(cos(deg2rad(x&y))*255));
                    glColor3ub(pixelcolor.r , pixelcolor.v, pixelcolor.b);
                    glVertex2d(x,y);
                }
            }
        glEnd();
        glFlush();
        SDL_GL_SwapBuffers();

    while (continuer)
    {
        SDL_WaitEvent(&event);
        switch(event.type)
        {
            case SDL_QUIT:
                continuer = false;
        }

    }

    SDL_Quit();

    return 0;
}

 

Image utilisateur
dont l'interpolation est la suivante :
            for(x=0; x<=255; x++)
            {
                for(y=0; y<=255; y++)
                {
                    i++;
                    assign(&pixelcolor,255-int(cos(deg2rad(x&y))*255),255-int(sin(deg2rad(x&y))*255),255-int(tan(deg2rad(x&y))*255));
                    glColor3ub(pixelcolor.r , pixelcolor.v, pixelcolor.b);
                    glVertex2d(x,y);
                }
            }

++
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:23:50

Pas d'avis sur mes créations à moi ?
En voilà deux autre ... bien que plus petites, je trouve la dernière beaucoup plus jolies ;) !

Image utilisateur

Image utilisateur

Notez que l'image est une symétrie ayant pour centre celui de l'image ;) ! Ah, le mystère des mathématiques ... c'est toujours marrant d'écrire une opération au hasard et de voir ce que ca donne ^^ !

  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:30:08

blackhole, c'est un peu monochrome a mon goût, mais ton algo doit etre sympa, tu devrais essayer d'y bidouiller avec des couleurs et des interpollation rigolotes ! ;)
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:38:11

http://fractal.new.fr
http://cailleaze.free.fr/cailleazeDevelopment/Sierpinski.rar

Le code n'est pas très intéressant vu que vous savez déjà afficher Mandelbrot et Sierpinski.
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:40:50

Un truc vite fait :
Image utilisateur
Mon "code" no comporte ni algo ni formules, juste des conditions. Il est tout pouris, non optimisé, ça m'étonnerais qu'il intéresse quelqu'un, il ne s'inscrit pas dans les fractale, mais aprés tout on est sur le site du zéro hein :-°
<?php
header ('Content-type: image/png');
$hauteur = 1000;
$largeur = 1000;

$R = 0;
$V = 180;
$B = 255;

$image = imagecreatetruecolor($largeur,$hauteur); // Création de l'image vide
ImageFilledRectangle($image, 0, 0, $hauteur, $largeur, imagecolorallocate($image, 255, 255, 255)); // On rempli l'arrière de blanc

for($i=0;$i<($largeur);$i++)
{
  // Ci desous le code pour larc en ciel
  if($R == 255)
    if($B >= 1)
      $B--;
    elseif($G == 255)
      $R--;
    else
      $G++;
  elseif($G == 255)
    if($B == 255)
      $G--;
    elseif($R == 0)
      $B++;
    else
      $R--;
  elseif($B == 255)
    if($R == 255)
      $B--;
    elseif($G == 0)
      $R++;
  else
      $G--;
 
  $coul = imagecolorallocate($image, $R, $G, $B); // Récupère la couleur
  ImageEllipse($image, $largeur/2, $largeur/2, $i, $i, $coul); // On fait notre piti rond =]
}

imagepng($image);
?>

Vous pouvez changer la couleur de début (celle au centre) du moment que c'est une couleur simple, sans nuance.
J'essayerais sûrement de faire quelquechose de vraiment "fractale" dès que j'en aurais le temps :)
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:41:59

Zulon> c'est l'ensemble de Julia, pas de Mandelbrot :)
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:53:53

Bonjour à tous :)

Vous avez tous fait des dessins supers sympas!
Mais on a parler d'atelier,
et comme déjà 2/3 ont demandé il me semble,
j'ai regardé vite fait le topic et pourtant,
je n'ai vu aucune explication ou tuto pour les personnes qui ne savent pas le faire!

Merci d'avance au(x) sauveur(s) =) ^^
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:57:59

oui c'est vrai moi aussi je voudrais bien savoir le faire mais j'ai beau chercher sur google je ne trouve pas de tutorial
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 18:58:24

je veu bien expliquer un de mes code, mais, je ne sait pas si c'est bien intéressant. enfin bon.

j'édite quand j'ai commenté ^^

  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 19:03:25

Moi j'ai fait ca un peu au hasard, et ca marche plutôt pas mal ;) ! J'ai une boucle de boucle pour tester chaque pixel de l'image, et selon une condition avec une formule mathématiques à l'intérieur, je dessine ( ou pas ) un pixel ...

Sur l'image suivante, je dessine plutôt des arc de cercle de rayon 10px. Un peu d'aléatoire par contre : le début et la fin de l'arc sont choisi au hasard. Mais on voit encore bien la symétrie, non ?

Image utilisateur

  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 19:13:19

blackhole, tu fais ca avec quoi ?
  • Partager sur Facebook
  • Partager sur Twitter
5 juillet 2007 à 19:29:59

Je vais expliquer vite fait le principe que j'ai utilisé pour mes 3-4 dessins :

_ tout d'abord le but va etre de remplir l'écran pixel par pixel d'ou l'utilisation des deux boucles for
_ ensuite pour arriver a quelque chose de jolie on va jouer sur la couleur de chaque pixel en definissant la couleur en fonction des coordonée du pixel, par exemple le pixel situé aux cordonnées (42,42) donc x=42 et y=42 sera de couleur verte avec la definition de couleur qui suit en RGB : R = x-y G = x+y B = 0

en fait chaque opération formera une figure : exemple, l'image suivante a la configuration suivante : R = x+y G = x-y B = x*y

Le resultat est le suivant :

Image utilisateur

Cet image est en fait le composé des trois couleurs :

Rouge : x+y

Image utilisateur

Vert : x-y

Image utilisateur

Bleu : x*y

Image utilisateur

En esperant vous avoir éclairer ^^

Sinon pour les fractales comme le triangle de Sierpinski, il faut reflechir a un algorythme capable d'afficher les bons triangles aux bons endroits, le tapis de Sierpinski est plus simple a réalisser pour commencer je pensse
  • Partager sur Facebook
  • Partager sur Twitter