Partage
  • Partager sur Facebook
  • Partager sur Twitter

Atelier Cod'Art

Anonyme
6 juillet 2007 à 12:19:56

ça me donne envis tout ça
j'vais essayer en PHP =)
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 12:22:41

Toutes ces belles images m'ont données envie d'essayer :)

J'ai donc relus les cours de M@téo et au boulot :

Image utilisateurImage utilisateur

C'est pas sublime (surtout au niveau du code qui pourrait être amélioré je pense), mais il me faut un peu de temps pour me réabituer à toutes ces fonctions.
<?php
header ("Content-type: image/png"); // on informe que l'on retourne une image

$image=imagecreate(202,202); // on crée une image vide de 202px de cotés

//on définie des couleurs :
$blanc = imagecolorallocate($image,255,255,255);
$noir = imagecolorallocate($image,0,0,0);
$rouge = imagecolorallocate($image,255,0,0);
$vert = imagecolorallocate($image,0,255,0);
$bleu = imagecolorallocate($image,0,0,255);

// On crée un array contenant les couleurs, dans lequel on choisit une couleur au hasard
$color = array($rouge, $vert, $bleu);
$randcolor = $color[mt_rand(0,2)]// Placer le rand ici pour une figure unicolore

//coordonnées du premier cube
$x1 = $y1 = 0;
$x2 = $y2 = 201;
// on crée le premier cube qui sert de cadre à l'image
ImageRectangle ($image, $x1, $y1, $x2, $y2, $noir);

for ($i=0; $i<200; $i+=5)
{
$x1 = 1;
$y1 = 1;
$x2 = 200;
$y2 = 1;
$x3 = 200;
$y3 = 200;
$x4 = 1;
$y4 = 200;

// On provoque une rotation du cube par modification des coordonées de ses sommets
$points = array(($x1+$i), $y1, $x2, ($y2+$i), ($x3-$i), $y3, $x4, ($y4-$i));

// $randcolor = $color[mt_rand(0,2)];  // Placer le rand ici pour une figure multicolore

// On crée un autre cube coloré, ayant subie une rotation
ImagePolygon ($image, $points, 4, $randcolor);
}

// on renvoie l'image créée
imagepng($image);
?>


Après cet echauffement il ne me reste plus qu'à relire le cour de SDL et mes cours de maths :lol:
  • Partager sur Facebook
  • Partager sur Twitter
Sans les pannes les machines seraient inhumaines.
6 juillet 2007 à 12:41:12

Bon, allez, je viens de faire un truc a la con, j'ai nommé :
Le générateur de tache pour psy !
Image utilisateur
Et voici le code :
<?php

$taillecarre = 300;

$img = imagecreate($taillecarre, $taillecarre);
$blanc = imagecolorallocate($img, 255, 255, 255);

$couleur = array(imagecolorallocate($img, 0, 0, 0), imagecolorallocate($img, 255, 0, 0), imagecolorallocate($img, 0, 255, 0), imagecolorallocate($img, 0, 0, 255), imagecolorallocate($img, 255, 255, 0), imagecolorallocate($img, 0, 255, 255), imagecolorallocate($img, 255, 0, 255));

for ($i = 0; $i<= 100; $i++) {
        $x = rand(0, $taillecarre);
        $y = rand(0, $taillecarre);
        $rayon = rand(1, $taillecarre/5);
        $taille = rand(1, 100*$rayon/$taillecarre);
        $idcouleur = rand(0, 6);
        $idcouleur2 = rand(0, 6);
        imagefilledellipse($img, $x, $y, $rayon+$taille, $rayon+$taille, $couleur[0]);
        imagefilledellipse($img, $x, $y, $rayon, $rayon, $couleur[0]);
}

imagepolygon($img, array (
                0,   0,
                $taillecarre-1, 0,
                $taillecarre-1, $taillecarre-1,
                        0, $taillecarre-1
            ),
            4,
            $couleur[0]);

header("Content-type: image/png");
imagepng($img);

?>

(Vous noterez que je fais un random pour les couleurs pour pouvoir afficher des taches de différentes couleurs, mais en fait c'est encore plus rigolo juste en noir et blanc...)

Alors, vous voyez quoi ? Moi je dirai que c'est un chien qui trotinne sur de l'herbe...
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 13:45:58

Encore moi ! ^^
Bon cette fois j'ai fais un programme pour générer des dessin comme ca :
Image utilisateur

Je pense que vous connaissez le principe, voici le code (bon ya ma fonction rgb qui est très moche vers la fin mais j'ai une grosse flemme de checrher mieux :p)

Une image interessante ou il n'y pas d'espace entre les lignes :
Image utilisateur

Voilou, j'espère que ca vous à plu !
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 14:15:25

Pas mal du tout, la deuxième.
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 14:27:07

Salut, j'ssai de faire un esemble de mandelbrot en DarkBasic pro, mais j'ai du mal a comprendre certaines parties du code Nanoc:

c2=(fenetreY/2.-j)/(fenetreY/2.8);
c1=(-(fenetreX/1.5)+i)/(fenetreX/3.8);

sur ces deux ligne que fait tu ? je cromprend pas trop. Merci de ton aide.

A++
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 14:28:10

Salut J'adore vos création je me demande se qu'un travail poussé par plusieurs personne pourait donné.
Perso je suis trés peut doué pour ce qui à trait à l'art donc j'ai laissé faire le hasard et l'extrapoloation (en C++,SDL, OpenGL)...

Image utilisateurImage utilisateurImage utilisateur

Quand on voit ça ya un mot qui régne hazard mais vous imaginier à se points ?
#include <SDL/SDL.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <ctime>

int main ( int argc, char** argv )
{

    SDL_Init(SDL_INIT_VIDEO);
    SDL_WM_SetCaption("Cod Art",NULL);
    SDL_SetVideoMode(640,480,32,SDL_OPENGL);

    glClear(GL_COLOR_BUFFER_BIT);
    gluOrtho2D(0,640,0,480);
    srand(time(NULL));

    int const MAXa = 100, MINa = 0;
    int const MAXr = 255, MINr = 0;
    int const MAXg = 255, MINg = 0;
    int const MAXb = 255, MINb = 0;
    int const MAXx = 680, MINx = 0;
    int const MAXy = 480, MINy = 0;
    int limitateura = (rand() % (MAXa - MINa + 1)) + MINa;


    glBegin(GL_POLYGON);
    for(int a=0 ; a<limitateura; a++)
    {

        int r = (rand() % (MAXr - MINr + 1)) + MINr;
        int g = (rand() % (MAXg - MINg + 1)) + MINg;
        int b = (rand() % (MAXb - MINb + 1)) + MINb;
        int x = (rand() % (MAXx - MINx + 1)) + MINx;
        int y = (rand() % (MAXy - MINy + 1)) + MINy;

        glVertex2d(x,y); glColor3ub(r,g,b);

    }
    glEnd();
    glFlush();
    SDL_GL_SwapBuffers();

    bool continuer = true;
    while (continuer)
    {

        SDL_Event event;
        while (SDL_WaitEvent(&event))
        {

            switch (event.type)
            {

            case SDL_QUIT:
            continuer = false;
            break;


            case SDL_KEYDOWN:
            {

                switch(event.key.keysym.sym)
                case SDLK_ESCAPE:
                continuer = true;
                break;
                }
            }
        }
    }



    SDL_Quit();
    return EXIT_SUCCESS;
}
 


Par contre je ne sait pas vraiment si j'ai le droit de posté se genre de truc vu que se n'est "mon" travail en quelque sorte...
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 14:44:36

Bonjour à tous,

Voici ma fractale, dite du dragon
Image utilisateur

Et le plus intéressant avec cette fractale (comme beaucoup d'autres) c'est qu'on peut paver le plan, en voici la preuve :

Image utilisateur

Si jamais quelqu'un veut refaire le carrelage de sa cuisine, il peut utiliser cette forme :p

Voici mon code (pour un dragon) :

<?php

function coord ($a,$b){
  $c = array(($b[0]-$a[0])/2+(1/2)*($b[1]-$a[1])+$a[0],-($b[0]-$a[0])*(1/2)+(1/2)*($b[1]-$a[1])+$a[1]);
  return array ($a,$c,$b);
}      

function coord2 ($a,$b){
  $c = array(($b[0]-$a[0])/2-(1/2)*($b[1]-$a[1])+$a[0],($b[0]-$a[0])*(1/2)+(1/2)*($b[1]-$a[1])+$a[1]);
  return array ($a,$c,$b);
}

function liste_point($pt1){

  for($i=0;$i<count($pt1)-1;$i++)
        { 
           if($i % 2 == 0 ) { $coordonne = coord($pt1[$i],$pt1[$i+1]); }
           else { $coordonne = coord2($pt1[$i],$pt1[$i+1]); }
           $pt[2*$i] = $coordonne[0];
           $pt[2*$i+1] = $coordonne[1];
           if (($i+1)== (count($pt1)-1)) {$pt[2*$i+2] = $coordonne[2];}
        }
       
  return $pt;
} 


header ("Content-type: image/png");   
     
    $im = ImageCreate (951, 600) or die ("Erreur lors de la création de l'image");
    $blanc = Imagecolorallocate ($im, 255, 255, 255);   // couleur de fond           
        ImageFill ($im,0,0,$blanc);
        $rouge = ImageColorAllocate ($im, 255, 0, 0);
       
       
        $x0 = array (200,140)$y0 = array ($x0[0],350+$x0[1])$pt = coord ($x0,$y0);
         for($i=1;$i<$recu;$i++) { $pt = liste_point($pt);      }
     for($i=0;$i<count($pt)-1;$i++) { ImageLine ($im, $pt[$i][0], $pt[$i][1], $pt[$i+1][0], $pt[$i+1][1], $rouge); }
       
       
        //echo '<pre>';         print_r($pt1);  echo '</pre>';

    ImagePng ($im);
        imagedestroy($im);
?>     
 


Et vous pouvez faire quelques tests ici (N'hésitez pas à modifier la variable recu, vous verrez la différence :p (c'est limité à 17 à cause de free, si je me rappelle bien))
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 14:47:07

Yop, on a dit qu'on a le droit dans tous les langages qu'on veut ? :-°

Je vais paraître nul à côté de vous ... mais bon
sources (ctrl+u) et tests

Ca ne marche que sur les navigateurs supportant la balise canvas (safari et firefox surtout).

edit: un rendu au pif
edit2: Il faut expliquer l'algorithme il parait, je trace n traits en partant du centre. En plus de ces n, j'en tracent encore qui sont inclinés à la moitié.
Au tour suivant, n est multiplié par 2 donc il y a deux fois plus de traits au fur et à mesures que l'on s'écarte du centre.
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 14:49:48

Voilà, je présente mon interprétation de la superformula :
Image utilisateur
Image utilisateur
Image utilisateur
Le tout avec un script Ruby et RMagick, disponible ici en couleurs et ici en raw.
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 15:01:06

J'ai tenté de faire une fractale de Lyapunov, avec Caml Graphics, voilà ce que ça donne :

Image utilisateur

let iterations = 4
(* La séquence utilisée, à modifier pour avoir des trucs rigolos *)
let r (a, b) n = match (n mod 5) with
    0 -> a
  | 1 -> a
  | 2 -> b
  | 3 -> a
  | 4 -> b
  | _ -> a
(* Deux fonctions utilisées pour le calcul *)
let rec iterate (a, b) resultat = function
    0 -> resultat
  | n -> iterate (a, b) ((r (a, b) n) *. resultat *. ( 1. -. resultat )) (n - 1)
 
let rec sum f = function
    0 -> 0.
  | n -> f n +. sum f (n - 1)
open Graphics
(* La fonction qui permet d'associer une couleur à chaque valeur *)
let get_color lambda =
  let lambda = -. lambda in
  let top c = if c > 255 then 0 else c in
    if lambda < 0.
    then rgb 0 0 (top (int_of_float (255. *. lambda /. -. 5.)))
    else rgb (top (int_of_float (255. *. (1. -. (lambda /. 2.) ** (2./.3.)))))
      (top (int_of_float (255. *. (1. -. (lambda /. 2.) ** (1./.3.)))))
      0
(* On parcourt l'image, et on calcule lambda à chaque fois *)
let markus x0 y0 largeur longueur facteur=
  for x = 0 to largeur do
    for y = 0 to longueur do
      let (a, b) = ((float_of_int (x + x0)) /. facteur, (float_of_int (y + y0)) /. facteur)
      in let lambda =
          ((sum
              (fun n -> log (abs_float ((r (a, b) n) *. (1. -. 2. *. (iterate (a, b) 0.5 n)))))
              iterations) /. (float_of_int iterations))
      in (Graphics.set_color (get_color lambda); Graphics.plot x y)
    done
  done
(* Les autres paramètres *)
let largeur = 600
and longueur = 600
let x0 = 600
and y0 = 600
let facteur = 300.
(* Code "générique" pour lancer le tout *)
let () =
  Random.self_init ();
  open_graph (Printf.sprintf " %dx%d" largeur longueur);
  auto_synchronize false;
  markus x0 y0 largeur longueur facteur;
  synchronize ();
  ignore (read_key())


Voilà, merci à lastsseldon pour son aide, et les couleurs (admirez le "let lambda = -. lambda in" :-° ). On peut faire bien plus joli toussa, sans trop de modification, mais faut trouver. Ceci dit, je suis pas sûr que le code fasse exactement ce qu'il devrait faire, parce que sur Wikipédia c'est quand même moins moche :D

Pour explorer un peu, vous pouvez modifier le nombre d'itérations (que ça soit plus "rugueux"), et changer le "zoom" en touchant à x0, y0, largeur et longueur. facteur est là pour faire "revenir" le calcul dans [0; 4], parce que c'est là que l'exposant de Lyapunov utilisé ici devient intéressant (j'ai esssayé avec les valeurs données sur wikipédia et ça a pas grand chose à voir :-° ).

Pour utiliser le programme, il faut ocaml, et le module Graphics, je fais ça pour le lancer :

ocaml graphics.cma lyapunov.ml


L'algo utilisé est celui-là : http://en.wikipedia.org/wiki/Lyapunov_fractal#Algorithm_for_generating_Lyapunov_fractals
et pour les couleurs, une copie de ça : http://en.wikipedia.org/wiki/Image:Lyapunov-fractal.png

Si quelqu'un trouve l'erreur.
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 15:12:02

J'ai tenté de modifier le code de certains pour faire des codarts et je les ais mis sur mon site web perso et ça mécris:

Fatal error: Call to undefined function ImageCreate() in /home/mymanpower/codart/codart01.php on line 32
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 15:23:12

Citation : kedare

Citation : Locke

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)


le code source et l'algo m'interesse , possible de les avoir svp ? :)



Bien sûr. C'est encore du Caml, avec des fonctions un peu moins générales que ce que j'ai utilisé ensuite :

#open "graphics";;

(* deux-trois fonctions pratiques pour tracer des trucs. La rotation est d'angle pi/2 (ou -pi/2, je sais plus) *)
let centre = function (a,b),(c,d) -> (a+.c)/.2.,(b+.d)/.2.;;
let rotation = function (a,b),(x,y) -> (b-.y+.x),(-.a+.x+.y);;
let homotetie = function (a,b),(x,y),k -> k*.(x-.a)+.a,k*.(y-.b)+.b;;

(* on décurryfie un peu les fonctions caml - en en profitant pour utiliser des float *)
let placerPoint (x,y) = moveto (int_of_float x) (int_of_float y);;
let tracerLigne (x,y) = lineto (int_of_float x) (int_of_float y);;

(* trace le carré ayant pour deux sommets opposés les points p1 et p2 *)
let traceCarre = function p1,p2 ->
    let w = centre(p1,p2) in
    placerPoint p1;
    tracerLigne (rotation(p1,w));
    tracerLigne p2;
    tracerLigne (rotation(p2,w));
    tracerLigne p1;;

(* LA fonction proprement dite *)
let carresImbriques = function p1,p2,k,n ->
    let rec aux (p,q) = function
        | 0 -> ()
        | n -> let w = centre(p,q) in
               traceCarre(p,q);
               aux (homotetie(p,rotation(p,w),k),homotetie(q,rotation(q,w),k)) (n-1)
    in
    open_graph("CarresImbriques");
    aux (p1,p2) n;
    let x = read_key() in close_graph();;

(* l'image que j'avais donnée correspond à un appel du type : *)
carresImbriques((100.,100.),(300.,300.),0.1,50);;
 


Voilà, voilà :) . Le principe est simple : on trace un carré définis par les deux points p1 et p2, puis on détermine les deux sommets du carré suivant, qui sont des points situés sur les deux côtés opposés du premier carré, à une distance c/k des sommets p1 ou p2, où c est la longueur du côté et k la constante que l'on indique et sur laquelle on peut jouer - k=0.1 dans l'image que j'avais donnée. Enfin, encore une fois, je sais pas si c'est clair, mais fait un dessin, tu verras.

On peut très bien utiliser des k supérieurs à 1, ça fait des carrés imbriqués dans l'autre sens, c'est aussi marrant.

Maintenant que j'y repense, on peut probablement faire un peu mieux en utilisant la fonction polygone que j'ai utilisée ensuite, puisque le centre de tous ces carrés reste toujours le même. Il suffit juste de déterminer un nouveau sommet, ce qui ne pose pas de problèmes (et on pourrait même glisser ici un autre paramètre modifiable pour arriver à des résultats tordus) . Tiens, et des pentagones imbriqués... à voir.
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 15:26:00

MaAaD, un multi récidiviste bien connu de ce topic, est de retour pour...

... bon Ok j'arrête et j'en vient aux faits :

Premier programme :
Le modulographe, qui utilise les étonnantes propriétées du modulo pour colorer un canvas en rouge, noir, et vert :
Image utilisateur
Voici le code :
from Tkinter import *
fen = Tk()
can = Canvas(fen, width = 500, height = 500, bg = "white")
can.pack()

def colore(tailleX,tailleY) :
        x = 0
        y = 0
        coul = "white"
        while y < tailleY:
                try :
                        if x%y == 0:
                                coul = "black"
                        elif y%x == 0:
                                coul = "red"
                        elif (x+y)%(x-y) == 0 :
                                coul = "green"
                        else :
                                coul = "white"
                except :
                        coul = "white"
               
                #On ne peut pas colorer un pixel avec Tkinter > . <, donc on cree des lignes d'un pixel de long...
                can.create_line(x,y,x+1,y+1, fill = coul)
                if x == tailleX :
                        y += 1
                        x = 0
                x += 1

colore(500,500)
fen.mainloop()


Deuxième programme :
Il pourrait s'inscrire dans la lignée commencée par Kados des programmes débiles pour psy : j'ai nommé le générateur de cercles qui grandissent !

Image utilisateur

Je ne met pas le code qui est moins interessant.
Il sufffit de cliquer sur le canvas pour créer un cercle, et on peux obtenir des trucs assez psychédéliques :p
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 15:33:47

MaAad, que peut être qu'en rajoutant de la couleur, ça pourrait faire trop bien :)

pas trop, ou alors, inverser, mettre un fond noir et les cercles en blanc.
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 15:37:35

La première image de MaAaD, c'est un peu comme moi quoi, mais il le fait que sur deux cotés alors que je le fait sur quatre ^^ !

Je maitrise les superformules, mais les fractals, toujours pas ...
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 15:54:05

Salut,

Et hop ma petite contribution : Image utilisateur

et le code php :


<?php
header ('Content-type: image/png');

$image = imagecreate(400,400);
$base = imagecolorallocate($image, 0, 0, 0);
$couleur_courbe = imagecolorallocate($image, 20, 50, 100);

$x = 200;
$y = 200;
$width = 500;
$height = 500;
$count = 0;

while($count<500)
{
        $width--;
        $height--;
        ImageFilledEllipse ($image, $x, $y, $width, $height,  imagecolorallocate($image, $width, (2* $width)%128, $height/2 ));
        $count++;
}

$x = 2;
$y = 2;
$count = 0;

while($x > 0 && $x < 400 && $y > 0 && $y < 400 && $count < 500)
{

        $x++;
        $y = $x;
        $x++;
       
        ImageEllipse ($image, $x, $y, ($x + $y)/3, 200 * sin(deg2rad($x))$couleur_courbe);
        $count++;
}


imagepng($image,'codart1.png');
?>
 


Et avec quelques modif :

Image utilisateur

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
6 juillet 2007 à 16:06:09

Pour faire des jolis trucs en console, y'a la libcaca.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
6 juillet 2007 à 16:12:26

Citation : Kreeg

Pour faire des jolis trucs en console, y'a la libcaca.



:lol: A essayer...

Pour ma part j'essaie de faire un petit truc en C# avec les fonctions de dessin du .NET Framework, je vous posterai le résultat sur un topic dédié ;)
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 16:21:51

Citation : Blackhole

La première image de MaAaD, c'est un peu comme moi quoi, mais il le fait que sur deux cotés alors que je le fait sur quatre ^^ !


Non , je le le fait sur les 4 côtés, regarde bien ;)
D'aileur en mofifiant un peu ton code (ou le mien), on peut faire un cercle, mais bon la je cherche du côté des fractales et des superformulas donc pas le temps...

En modifiant un peu le script cité plus haut (en utilisant notemment les cercles, et les arcs), on obtient d'assez jolies choses :

Pour cette image il suffit de remplacer dans ce code le mot "line" des lignes 76 et 79 par le mot "oval", et le mot "fill" de ces deux même lignes par le mot "outline".
Image utilisateur

Pour celle-là, c'est plus compliqué, allez faire un tour ici.
Image utilisateur
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 16:31:05

Salut à tous,

Je voulais vous dire que certaines de vos réalisations sont vraiment magnifiques ! Bravo ! Voici ma (première) modeste contribution, je suis en vrai Zér0 pour ce qui est des "graphismes"/"dessins" ou appellez ça comme vous voulez :p

Image utilisateur

Ceci a été réalise de manière extrêmement simple grâce au mode turtle (qui vient à la base du langage logo) de python, le tout en quelques lignes de code !

from trurtle import *

i=0
while i<400:
    i=i+1
    forward(i)
    left(10*i)


Six lignes seulement ! ça veut un peu rien dire tout ça mais je trouve pas si moche (on dirait des tentacules :p )

N'utiliser que forward() et left() dans des boucles avec différentes valeurs donne parfois des résultats assez surprenants !

D'autres dessins basiques comme celui-ci suivront peut-être.

Tod

PS:

Je conseille python/turtle à tous les débutants parce que c'est extrêmement facile d'accès et on peut déjà faire des choses assez sympa en quelques lignes (je trouve)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
6 juillet 2007 à 16:42:59

Tod > Pourquoi ne pas ajouter quelques parcours aléatoires?
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 16:47:24

Haha tod c'est marrant ton truc :D
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 17:04:51

Bonjour, voilà ma copie.
Pour la petie histoire, il s'agit d'un petit dessin que je m'amuse parfois à grifonner sur mes feuilles de note, mais je suis forcé de constaté que mon ordi dessine ça mieux que moi :p . Pour le fond, j'ai voulu faire qulque chose qui d'orginal et d'assez simple à coder ...
Pour plus d'infos, cusulter mon lien ;) .
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 17:26:22

Quand j'ai vu ce qu'il était possible de faire en PHP, je suis resté bouche bée, j'ai essayé de faire pareil, mais ça a pas le même rendu :-°
Enfin bon, voilà ce qui m'a bouffé tout mon après-midi :
Image utilisateur

Je m'y remet tout de suite pour essayer d'améliorer ça :)
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 17:34:17

@lastsseldon

La faute ligne 20 de OpenGlView a été corrigée hier dans la journée, quelqu'un me la signalée par mail. Elle est passé entre les mailles de mon filet étant donné que j'ai codé ça sous windows et qu'il n'y a pas besoin de respecter la casse dans les nom des fichiers sur cette plateforme.

En ce qui concerne l'image 2, que j'ai appelé Woodstock pour information :p , je n'ai pas noté la formule précise mais tu peux tatonner autour de ça (c'est très très proche) :

f(z) = z^(-3.2) + 0.9 + 0.2*i 


Après je me rappel avoir pas mal joué avec les seuils et la palette pour obtenir ce résultat. Les seuils c'est en fait les valeurs (hauteur du biom) entre lesquelles tu décides d'afficher ta palette de couleurs.

L'algorithme principale de QBiom n'est pas compliqué en soit, mais le logiciel offre tout un tas de possibilité d'édition de biomorphe assez complexes à mettre en oeuvre, la source est donc remplie de choses qui ne servent pas au dessin à proprement parler, par exemple pouvoir visualiser en temps réel le nouveau biomorphe lors de la modification de la palette et des seuils ou ce genre de choses. Si tu ne veux pas perdre trop de temps va à l'essentiel en lisant les fonctions que j'ai cité plus haut.

Bonne chance,
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 18:22:58

J'ai fait un truc dans le même genre que MaAad, mais en php.
Ca donne ça :
Image utilisateur

Et le code :

<?php
//les informations
$taille = 500;
$demi_taille = $taille / 2;
$image = imagecreate($taille, $taille);
$fond = imagecolorallocate($image, 0, 0, 0);
$espace = $taille / 100;

// Définition de tout les x et les y
$x1 = 0;
$y1 = $demi_taille;

$x2 = $demi_taille;
$y2 = $demi_taille;

$x3 = $taille;
$y3 = $demi_taille;

$x4 = $demi_taille;
$y4 = $demi_taille;         
while ($x1 <= $demi_taille)
{
        // La couleur aléatoire
        $r = mt_rand(0, 255);
        $v = mt_rand(0, 255);
        $b = mt_rand(0, 255);
        $couleur = imagecolorallocate($image, $r, $v, $b);
        // On dessine le polygone
        $nb_points = 4;
        $coordonees = array ($x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4);
        imagepolygon($image, $coordonees, $nb_points, $couleur);
        // Les opérations des variables
        $x1 += $espace;
        $y2 += $espace;
        $x3 -= $espace;
        $y4 -= $espace;
}

imagepng($image, 'fractale.png');
?>
<html>
        <head>
                <title>Fractales</title>
        </head>
        <body style="background: black; color: white;">
                <center><img src="fractale.png"></center>
        </body>
</html>
 


C'est indenté, commenté et ça enregistre puis le code html affiche l'image.
Pour changer la taille de l'image, on change $taille et après, tout se fait tout seul :D

Edit : Vous pouvez bien sur changer la taille de l'espace entre chaque trait, mais là, c'est optimisé ^^
Et je suis en train de tester des machins pour que ça fasse pareil autour.

Je me souviens que au collège, j'en faisait plein mon agenda. maintenant, j'en ai fait pleins en php :)
(bon on s'en fout de ma vie mais pas grave je le dis quand même :p )

Edit 2 :
Pour ceux qui veulent voir le script, c'est sur mon no-ip.
L'image fait 700 par 700.
Ce qui veut dire que ce soir, vous y aurez plus accès ^^
  • Partager sur Facebook
  • Partager sur Twitter
6 juillet 2007 à 19:06:09

En regardant le code de Furzel, j'ai fait un programme qui en génère toutes les pas mal de possibilités (63, si j'ai bien compté) :D

http://mdumoulin.free-h.org/download/codart.7z (953 Ko)

Les commandes :

~ la ligne 1 à 0 au dessus des lettres, avec ou non SHIFT, CTRL ou ALT. les SHIFT, CTRL ou ALT de gauche ou de droite ne
font pas la même chose. (en passant, le SHIFT de droite ne fait rien)
~ ESPACE pour l'initial.
~ 1,2,3 sur le NUMPAD à droite du clavier pour les 3 petit derniers.
~ ECHAP pour quitter.

Voilà ^^

PS : Non, le programme ne contient pas de virus ou spywares... Par contre, ça me tente pas de livrer le code source :-/ (EDIT : parce que c'est un peu le bordel dedans xD)

EDIT2 : par contre, si vous le voulez VRAIMENT, MP-ez moi ^^
  • Partager sur Facebook
  • Partager sur Twitter
Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
6 juillet 2007 à 19:08:10

Salut,

Voila une petite représentation de l'ensemble de Julia.
Ensemble de Julia
Cette image a été générée en C avec la librairie SDL.
  • Partager sur Facebook
  • Partager sur Twitter