Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Autres langages > Atelier Cod'Art > Lecture du sujet

Atelier Cod'Art

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  ...  8  9  10  11  12  13  14  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  8  9  10  11  12  13  14  Suivante
Hors ligne Knarf2 # Posté le 22/02/2008 à 18:12:46
Free the Lemmings
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Citation : candide
J'ai lu dans ce fil plusieurs programmes de graphisme écrit en Python : c'est incroyablement court par rapport à du C où pour faire la même chose il faut 5 ou 10 fois plus de code (ma courbe de Hilbert, c'est presque 500 lignes de code) sans compter qu'il faut trouver des bibliothèques graphiques (la SDL est limitée).


Jette un oeil sur ces librairies C :
- Cairo : dessin vectoriel, très beau rendu.
- libgd : dessin bitmap, plus rustique mais léger.

< Absent pour un certain temps... Ou bien un temps incertain ? (étude, internat, toussa) >

< Image utilisateur >
< GU/MU/CS@ d- s: a--- C+++ U+ P++ L++ E>+ W++ N+ o? !K? w->-- !O? M- !V PS>+ !PE !Y? PGP- t 5- X R tv- b+ !DI--- D+ G e-? h!-- r--- y-- >
< site >

 
Hors ligne topmas # Posté le 22/02/2008 à 19:14:56
Avatar
Groupe : Membres
Le triangle de pascale represente en Java :
Image utilisateur
Code : Java - Afficher / masquer les numéros de ligne
  1. public void colorer()
  2.                 {
  3.                         Color couleur;
  4.                         int i;
  5.                         int j;
  6.                         int red;
  7.                         int blue;
  8.                         int green;
  9.                         int col;
  10.                        
  11.                        
  12.                        
  13.                         for(i=0; i<imgWidth;i++)
  14.                         {
  15.                                 couleur = new Color(1, 1, 1);
  16.                                 img.setRGB(i, i, couleur.getRGB());
  17.                                 couleur = new Color(0, 0, 0);
  18.                                 img.setRGB(0, i, couleur.getRGB());
  19.                         }
  20.                        
  21.                         i = 1;
  22.                         j = 2;
  23.                        
  24.                         while(j < imgHeight)
  25.                         {
  26.                                 System.out.println("J = "+j);
  27.                                 while(i != j)
  28.                                 {
  29.                                        
  30.                                         col = img.getRGB(i-1, j-1);
  31.                                         couleur = new Color(col);
  32.                                         red = couleur.getRed();
  33.                                        
  34.                                         green = couleur.getGreen();
  35.                                        
  36.                                         blue = couleur.getBlue();
  37.                                        
  38.                                         col = img.getRGB(i, j-1);
  39.                                         couleur = new Color(col);
  40.                                         red = (red + couleur.getRed())%255;
  41.                                         green = (green + couleur.getGreen())%255;
  42.                                         blue = (blue + couleur.getBlue())%255;
  43.                                         couleur = new Color(red, green, blue);
  44.                                         img.setRGB(i, j, couleur.getRGB());
  45.                                         i++;
  46.                                 }
  47.                                 i = 1;
  48.                                 j++;
  49.                         }
  50.                 }
  51.                
  52.                
  53.  
  54.         }


edit :
Apres l'ajout de couleurs :
Image utilisateur
Interessant le jeu de la vie
Édité le 22/02/2008 à 21:30:16 par topmas
Hors ligne salut- # Posté le 22/02/2008 à 21:28:21
Ninten-games
Avatar
Groupe : Membres
Voilà ma contribution :euh:
(on ne rigole pas hein ! J'ai déjà réussi à créer l'image et à mettre du texte)

ICI



Prochaine étape je change la police :p
Édité le 22/02/2008 à 21:34:13 par salut-

Mes projets | Ninten-games (Abandonné provisoirement) | Retrogames (Ouvert)
 
Hors ligne kedare # Posté le 22/02/2008 à 23:55:02
I Hate PHP
Avatar
Groupe : Membres
Citation : salut-
Voilà ma contribution :euh:
(on ne rigole pas hein ! J'ai déjà réussi à créer l'image et à mettre du texte)

ICI



Prochaine étape je change la police :p

essais de faire des effets avec la police , ca pourrait rendre pas mal, genre des superposition en chaine de differentes tailles , etc ... :D

"Toute technologie suffisamment avancée est indifférenciable de la magie" Arthur C. Clarke, “Profil de l’avenir”, 1961
Pseudo PSN: Kedare
Code Mii: 8684 6147 7730 6877

dev.Kedare Blog
 
Hors ligne GuGus963 # Posté le 22/02/2008 à 23:58:41
Pour la connaissance libre !
Avatar
Groupe : Membres
Hors ligne Leronwë # Posté le 23/02/2008 à 00:59:36
Groupe : Membres
Voici une idée intéressante : transformer un fichier binaire en image, en associant 3 octets successifs a un pixel (valeurs rvb). L'algorithme est sans grand interet, mais cela donne des resultats curieux pour certains types de fichiers :
Le code source du programme : Image utilisateur

L'executable (linux) du programme : Image utilisateur

Un fichier pdf (raies blanches verticales).
Un fichier jpg et le fichier d'origine (complètement différents).
(les fichiers sont volontairement en .bmp, les dernières images sont un peu lourdes)

Hors ligne GuGus963 # Posté le 23/02/2008 à 01:48:09
Pour la connaissance libre !
Avatar
Groupe : Membres
Ah oui, mais c'est quand même pas très joli :p J'avais fait un truc comme ça y a quelque temps aussi ^^
(le code est moche, illisible et tout ce que vous voulez ^^ )

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. function write_img($text, $filename, $imagetype = U_PNG) { // $filename may be a gd image
  3.  
  4.         if(is_resource($filename) && @get_resource_type($filename) == 'gd') {
  5.  
  6.                 $write = false;
  7.  
  8.                 $image =& $filename;
  9.  
  10.         }
  11.  
  12.         else {
  13.  
  14.                 $write = true;
  15.  
  16.                 $len = strlen($text)+6;
  17.  
  18.                 $size = image_calc($len);
  19.  
  20.                 $text = pack('v', $size).pack('L', $len).$text;
  21.  
  22.                 $image = imagecreatetruecolor($size, $size);
  23.  
  24.         }
  25.  
  26.         $i = 0;
  27.  
  28.         for($x=0; $x<$size; $x++) {
  29.  
  30.                 for($y=0; $y<$size; $y++) {
  31.  
  32.                         if($i > $len) break;
  33.  
  34.                         $color = imagecolorallocate($image, ord($text[$i]), ord($text[$i+1]), ord($text[$i+2]));
  35.  
  36.                         imagesetpixel($image, $y, $x, $color);
  37.  
  38.                         $i += 3;
  39.  
  40.                 }
  41.  
  42.                 if($i > $len) break;
  43.  
  44.         }
  45.  
  46.        
  47.  
  48.         if(!$write) return $image;
  49.  
  50.         switch($imagetype) {
  51.  
  52.                 case U_PNG:
  53.  
  54.                         imagepng($image, $filename, 0);
  55.  
  56.                         break;
  57.  
  58.                 case U_GIF:
  59.  
  60.                         imagegif($image, $filename);
  61.  
  62.                         break;
  63.  
  64.                 case U_JPEG:
  65.  
  66.                         imagejpeg($image, $filename);
  67.  
  68.                         break;
  69.  
  70.                 case U_GD:
  71.  
  72.                         imagegd($image, $filename);
  73.  
  74.                         break;
  75.  
  76.         }
  77.  
  78.         return true;
  79.  
  80. }
  81.  
  82.  
  83.  
  84. function read_img($filename, $imagetype = U_PNG) { // $filename may be a gd image
  85.  
  86.         if(is_resource($filename) && @get_resource_type($filename) == 'gd') {
  87.  
  88.                 $image =& $filename;
  89.  
  90.         }
  91.  
  92.         else {
  93.  
  94.                 switch($imagetype) {
  95.  
  96.                         case U_PNG:
  97.  
  98.                                 $image = imagecreatefrompng($filename);
  99.  
  100.                                 break;
  101.  
  102.                         case U_GIF:
  103.  
  104.                                 $image = imagecreatefromgif($filename);
  105.  
  106.                                 break;
  107.  
  108.                         case U_JPEG:
  109.  
  110.                                 $image = imagecreatefromjpeg($filename);
  111.  
  112.                                 break;
  113.  
  114.                         case U_GD:
  115.  
  116.                                 $image = imagecreatefromgd($filename);
  117.  
  118.                                 break;
  119.  
  120.                 }
  121.  
  122.         }
  123.  
  124.        
  125.  
  126.         ## headers
  127.  
  128.         $rgb = imagecolorat($image, 0, 0);
  129.  
  130.         $size = chr(($rgb >> 16) & 0xFF); // width & height
  131.  
  132.         $size .= chr(($rgb >> 8) & 0xFF);
  133.  
  134.         $len = chr($rgb & 0xFF); // length of informations
  135.  
  136.         $rgb = imagecolorat($image, 1, 0);
  137.  
  138.         $len .= chr(($rgb >> 16) & 0xFF);
  139.  
  140.         $len .= chr(($rgb >> 8) & 0xFF);
  141.  
  142.         $len .= chr($rgb & 0xFF);
  143.  
  144.         $len = unpack('Lint32', $len);
  145.  
  146.         $len = $len['int32'];
  147.  
  148.         $len -= 6;
  149.  
  150.        
  151.  
  152.         $size = unpack('vint16', $size);
  153.  
  154.         $size = $size['int16'];
  155.  
  156.        
  157.  
  158.         $out = '';
  159.  
  160.        
  161.  
  162.         if($size > 2) {
  163.  
  164.                 $x = 2;
  165.  
  166.                 $y = 0;
  167.  
  168.         }
  169.  
  170.         else {
  171.  
  172.                 $x = 0;
  173.  
  174.                 $y = 1;
  175.  
  176.         }
  177.  
  178.         $first = true;
  179.  
  180.        
  181.  
  182.         $i = 0;
  183.  
  184.        
  185.  
  186.        
  187.  
  188.         for(; $y<$size; $y++) {
  189.  
  190.                 if($first) {
  191.  
  192.                         $first = false;
  193.  
  194.                 }
  195.  
  196.                 else {
  197.  
  198.                         $x = 0;
  199.  
  200.                 }
  201.  
  202.                
  203.  
  204.                 for(; $x<$size; $x++) {                
  205.  
  206.                         if($i > $len) break;
  207.  
  208.                         $rgb = imagecolorat($image, $x, $y);
  209.  
  210.                
  211.  
  212.                         if($i < $len) {
  213.  
  214.                                 $out .= chr(($rgb >> 16) & 0xFF);
  215.  
  216.                                 $i++;
  217.  
  218.                         }
  219.  
  220.                        
  221.  
  222.                         if($i < $len) {
  223.  
  224.                                 $out .= chr(($rgb >> 8) & 0xFF);
  225.  
  226.                                 $i++;
  227.  
  228.                         }
  229.  
  230.                        
  231.  
  232.                         if($i < $len) {
  233.  
  234.                                 $out .= chr($rgb & 0xFF);
  235.  
  236.                                 $i++;
  237.  
  238.                         }
  239.  
  240.                 }
  241.  
  242.                
  243.  
  244.                 if($i > $len) break;
  245.  
  246.         }
  247.  
  248.        
  249.  
  250.         imagedestroy($image);
  251.  
  252.        
  253.  
  254.         return $out;
  255.  
  256. }
  257. ?>


Ca n'a quand même pas grand interet ^^ Enfin c'est en général assez laid :(

Image utilisateur

(avec le bash de linux)
Édité le 23/02/2008 à 02:19:54 par GuGus963
 
Hors ligne Visiteur # Posté le 23/02/2008 à 11:14:55
Collector, m'voyez ?
Avatar
Groupe : Membres
Pour info gimp 2 intègre un générateur de fractales puissant et facile d'accès.
Petite fractale en passant :
Image utilisateur
Image utilisateur
edit :
Image utilisateur
Édité le 23/02/2008 à 11:22:29 par Visiteur
 
Hors ligne gnomnain # Posté le 23/02/2008 à 11:24:17
huh ?
Avatar
Groupe : Membres
(Toutes ces images ont été générées avec cfdg, j'en parle dans ce post http://www.siteduzero.com/forum-83-164 [...] html#r2202559 )

Quelques images que j'ai généré :

Une spirale:
Image utilisateur
Code : Autre
1
2
3
4
5
6
7
8
9
10
startshape main
 
rule main {
20* {r 18} spiral {}
}
 
rule spiral {
CIRCLE {}
spiral { s 0.9875 r 1 x +1}
}


Et un tracé au hasard. C'est ma première utilisation de règles au hasard et on peut remarquer que certaines variations marchent mieux que d'autres.
La variation AAN :
Image utilisateur
La variation ABU continue assez longtemps, j'ai dû l'arrêter en cours de rendu sinon on ne voyait plus rien à la fin (cercles trop petits).
Image utilisateurImage utilisateur

Et voilà le code :
Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
startshape main
 
rule main {
path { s 0.1 }
}
 
rule path {
CIRCLE{}
path { x +1 }
}
 
rule path 0.17 {
}
 
rule path 0.1 {
CIRCLE{}
path [ r 90 x +1 ]
path { x +1 }
}
 
rule path 0.1 {
CIRCLE{}
path [ r -90 x +1 ]
path {x +1}
}
Édité le 26/05/2008 à 08:50:11 par gnomnain

xmonad user - j'utilise haskell - et ocaml - pourquoi je n'aime pas php
Quelques tutos à lire : récursivité - typage - algorithmique

"Software and cathedrals are much the same - first we build them, then we pray."
 
Hors ligne Visiteur # Posté le 23/02/2008 à 11:49:34
Collector, m'voyez ?
Avatar
Groupe : Membres
Hors ligne geenux # Posté le 23/02/2008 à 12:45:44
Vive Qt
Avatar
Groupe : Membres
J'ai fait le tapis de sierpinski:
Image utilisateur

Voilà le code:
Code : C++ - Afficher / masquer les numéros de ligne
  1. /*******************************************************
  2.  *Auteur: Tanguy Arnaud
  3.  *Tapis de Sierpinski
  4.  ******************************************************/
  5.  
  6. #include <SFML/Graphics.hpp>
  7. #include <vector>
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.   int w=600;
  13.   int h=600;
  14.     // Create the main window
  15.     sf::RenderWindow App(sf::VideoMode(w,h, 32), "SFML: Tapis de Sierpinski");
  16.     App.SetBackgroundColor(sf::Color(200, 0, 0));
  17.  
  18.     // Start main loop
  19.     bool Running = true;
  20.     while (Running)
  21.     {
  22.         // Process events
  23.         sf::Event Event;
  24.         while (App.GetEvent(Event))
  25.         {
  26.             // Close window : exit
  27.             if (Event.Type == sf::Event::Closed)
  28.                 Running = false;
  29.  
  30.             // Escape key : exit
  31.             if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
  32.                 Running = false;
  33.            
  34.  
  35.         }
  36.        
  37.         /***** DEBUT DE L'ALGORYTHME DE GENERATION DU TAPIS *****/
  38.         int nbrCarre = 6;       // le nombre de carré de taille différentes
  39.         float carre = w/3;      // le coté d'en carré
  40.         int carreLigne=1;       // le nombre de carrés par ligne
  41.        
  42.         vector<sf::Sprite> vectorSprite; // le vecteur contenant tout les sprites générés
  43.        
  44.         for (int i=0;i<nbrCarre;i++) // on répête l'action pour toutes les tailles de carré
  45.           {
  46.             for(int x=0;x<carreLigne;x++)
  47.               {
  48.                 for (int y=0;y<carreLigne;y++)
  49.                   {
  50.                     sf::Sprite Sprite;
  51.                     Sprite.Resize(carre,carre); // on met le carré à la bonne taille
  52.                     Sprite.SetLeft((1+3*x)*carre); /* on positionne le carré par rapport à la partie gauche de l'écran:
  53.                                                     x correspond au grand carré, on le multiplie par 3 puis le divise par la taille du côté du carre pour le centrer horizontalement dans le grand carré
  54.                                                     */
  55.                     Sprite.SetTop((1+3*y)*carre);   //idem verticalement
  56.                     Sprite.SetColor(sf::Color(i*20,i,i)); // on le colorie
  57.                     vectorSprite.push_back(Sprite);            // on ajoute au vecteur contenant tous les sprites
  58.                    
  59.                   }
  60.                
  61.               }
  62.             carre = carre/3;    // on divise la taille du côté du carré par 3 pour qu'il soit 3 fois plus petit lors de l'itération suivante
  63.             carreLigne = carreLigne*3; // a l'itération suivante, il y aura 3 fois plus de carrés
  64.            
  65.           }
  66.  
  67.         /***** AFFICHAGE ****/
  68.         vector<sf::Sprite>::iterator it;
  69.         for(it=vectorSprite.begin();it!=vectorSprite.end();it++)
  70.           {
  71.             App.Draw((*it));
  72.           }
  73.        
  74.         // Display window on screen
  75.         App.Display();
  76.     }
  77.  
  78.     return EXIT_SUCCESS;
  79. }


Ps: il s'agit de ma première fractale (et aussi de mon premier programme c++ utilisant la SFML)
Hors ligne Manux # Posté le 23/02/2008 à 19:19:40
^^
Avatar
Groupe : Membres

Voilà chaque image avec leur code Python(j'utilise Pygame):

1:
Image utilisateur
Code : Python - Afficher / masquer les numéros de ligne
  1. from pygame import*
  2. import pygame
  3. from math import *
  4. pygame.init()
  5. screen=pygame.display.set_mode([800,600])
  6.  
  7. whereat=[400,300]
  8.  
  9. class Primes:
  10.     def __init__(self):
  11.         self.primes=[2]
  12.         self.modulos=[0]
  13.         self.current=2
  14.     def getnext(self):
  15.         isnotprime=False
  16.         for i in range(len(self.modulos)):
  17.             self.modulos[i]+=1
  18.             if self.modulos[i]==self.primes[i]:
  19.                 self.modulos[i]=0
  20.                 isnotprime=True
  21.         self.current+=1
  22.         if isnotprime:
  23.             return self.getnext()
  24.         else:
  25.             self.primes.append(self.current)
  26.             self.modulos.append(0)
  27.             return self.current
  28.     def isprime(self,x):
  29.         for i in self.primes:
  30.             if x%i==0:
  31.                 return True
  32.         return False
  33. p=Primes()
  34.  
  35. for i in range(2000):
  36.     x=whereat[0]*sin(whereat[1])*(p.current%2)%800
  37.     y=whereat[1]*tan(whereat[0])*(p.current%2)%600
  38.     if 800>x>0 and 600>y>0:
  39.         screen.set_at((x,y),[255,0,0])
  40.     pygame.display.flip()
  41.     whereat[0]=(whereat[0]+0.01)
  42.     whereat[1]=(whereat[1]+0.01)
  43.     p.getnext()

2:

Image utilisateur
Code : Python - Afficher / masquer les numéros de ligne
  1. from pygame import*
  2. import pygame
  3. from math import *
  4. pygame.init()
  5. screen=pygame.display.set_mode([800,600])
  6.  
  7. whereat=[400,300]
  8.  
  9. for i in range(20000):
  10.     x=whereat[0]*tan(whereat[0])%800
  11.     y=whereat[1]*cos(whereat[1])%600
  12.     if 800>x>0 and 600>y>0:
  13.         screen.set_at((x,y),[255,0,0])
  14.     pygame.display.flip()
  15.     whereat[0]=(whereat[0]+0.001)
  16.     whereat[1]=(whereat[1]+0.001)

3:
Image utilisateur
je n'ai que changé cette ligne:
Code : Python - Afficher / masquer les numéros de ligne
  1. whereat[1]=(whereat[1]+0.002)

4:
Image utilisateur
Code : Python - Afficher / masquer les numéros de ligne
  1. from pygame import*
  2. import pygame
  3. from math import *
  4. pygame.init()
  5. screen=pygame.display.set_mode([800,600])
  6.  
  7. whereat=[300,300]
  8.  
  9. x,y=0,0
  10. for i in range(20000):
  11.     px=x
  12.     py=y
  13.     x=whereat[0]*tan(whereat[0])%800
  14.     y=whereat[1]*cos(whereat[1])%600
  15.     if 800>x>0 and 600>y>0:
  16.         screen.set_at((x,y),[x%y%155+100,0,y%x%155+100])
  17.     pygame.display.flip()
  18.     whereat[0]=(whereat[0]+0.001)
  19.     whereat[1]=(whereat[1]+0.004)

Citation : Auteur Inconnu
Une regular expression est human readable, c'est indiscutable; voyez plutot:
^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$
Evident non?
 
Hors ligne hinomi # Posté le 23/02/2008 à 21:38:47
Web developpeur
Groupe : Membres
Bonsoir, voici ma première tentative de cod'art en c+ avec opengl :
Image utilisateur
Code : C++ - Afficher / masquer les numéros de ligne
  1. for (double x = -30 ; x <=10 ; x+=0.1) {
  2.     glBegin(GL_LINES);
  3.     glColor3d((x/10+1)/3, (1-(x/10))/3,(x-1-x/10)/3);
  4.         glVertex2d(-10, y(-10, x));
  5.         glVertex2d(10, y(10, x));
  6.     glEnd();
  7.     }
  8.  
  9. inline double fprim(double x) {
  10.        return 1/(sqrt(fabs(x*sin(x*M_PI/180))));
  11. }
  12. inline double f(double x) {
  13.        return 2*sqrt(fabs(x*sin(x*M_PI/180)));
  14. }
  15.  
  16. inline double y(double x, double a) {
  17.        return fprim(a)*(x-a) +f(a);
  18. }

Internet n'as pour limite que votre imagination. ^^ (et la limite du débit de votre modem :p )
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne Kreeg # Posté le 23/02/2008 à 22:15:17
Je mangerais bien du GNU...
Avatar
Groupe : Bannis
Ton rendu est assez moche je trouve. Tu peux pas régler ça ?

Parti définitivement.

Raise the Titanic ! [Voir le topic]
En mode Hard Rock (ACDC/GnR/VR §) - Slash et J. Petrucci sont mes héros \o/
Attention (va) aux (sur) messages (ce) subliminaux, (site) camarade !
Une question sur OpenGL, un problème ? Rejoignez #opengl sur EpikNet !
La SDL pue grave, mais pas SFML !
Le modo qui ne connaissait pas Dimitri Borgur... :p


 
Hors ligne hinomi # Posté le 23/02/2008 à 22:31:13
Web developpeur
Groupe : Membres
oula tu m'en demande XD
c'est mon première essai dans le graphisme du genre...

Internet n'as pour limite que votre imagination. ^^ (et la limite du débit de votre modem :p )
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne Kreeg # Posté le 23/02/2008 à 22:57:56
Je mangerais bien du GNU...
Avatar
Groupe : Bannis
Tu peux coder une fonction eval() ou un truc du genre pour entrer soit même sa fonction et ses paramètres de dimensions de fenêtres :)

Parti définitivement.

Raise the Titanic ! [Voir le topic]
En mode Hard Rock (ACDC/GnR/VR §) - Slash et J. Petrucci sont mes héros \o/
Attention (va) aux (sur) messages (ce) subliminaux, (site) camarade !
Une question sur OpenGL, un problème ? Rejoignez #opengl sur EpikNet !
La SDL pue grave, mais pas SFML !
Le modo qui ne connaissait pas Dimitri Borgur... :p


 
Hors ligne candide # Posté le 24/02/2008 à 04:10:28
"In code we trust"
Avatar
Groupe : Membres
Citation : gnomnain
Si vous voulez faire des jolis dessins, vous pouvez essayer cfdg.

Avec ça, vous n'avez pas besoin de vous occuper de programmer le dessin, mais seulement de le décrire dans un langage de programmation très simple.


Impressionnant en effet.

Citation : Knarf2

Jette un oeil sur ces librairies C :
- Cairo : dessin vectoriel, très beau rendu.
- libgd : dessin bitmap, plus rustique mais léger.


Merci grandement de ces infos, on m'avait dit du bien de libgd et j'avais entendu parler de cairo sans savoir ce que c'était, mais je comprends maintenant que ça peut m'intéresser au plus haut point.


 
Hors ligne geenux # Posté le 24/02/2008 à 10:55:09
Vive Qt
Avatar
Groupe : Membres
Bonjour!
Ca y est j'ai terminé ma deuxième fractale: il s'agit du triangle de sierpinski!
Je me suis basé sur le triangle de pascal pour le générer (avec les nombres pairs et impair), et ça marche parfaitement!
On peut avoir des rendus vraiment impressionnant en jouant sur les couleurs:
Image utilisateur

Vous pourrez trouver les autres images ici

Voici le code source en c++ utilisant la lib SFML.
Code : C++ - Afficher / masquer les numéros de ligne
  1. #include <SFML/Graphics.hpp>
  2. #include <iostream>
  3. #include <vector>
  4. #include <math.h>
  5. using namespace std;
  6.  
  7. bool estPaire(int n)
  8. {
  9.   if(n%2==0)
  10.     return true;
  11.   else
  12.     return false;
  13. }
  14.  
  15. sf::Image sierpinski(int n)
  16. {
  17.   /**** Algorythme de génération du triangle de pascal
  18.         n = 10
  19.         c[0][0] = 1
  20.  
  21.         pour i de 1 à n faire
  22.         c[i][0] = 1
  23.         c[i][i] = 1
  24.         pour j de 1 à i-1 faire
  25.         c[i][j] = c[i-1][j-1] + c[i-1][j]
  26.         finpour
  27.         finpour
  28.         afficher_tableau(c)
  29.   ****/
  30.   /****** Génération du triangle de pascal ******/
  31.  int c[n][n];
  32.  for (int i=0;i<n;i++)          // initialisation à 1 de toutes les cases
  33.    {
  34.      for (int j=0;j<n;j++)
  35.          c[i][j] = 1;
  36.      
  37.    }
  38.                                
  39. for (int i=0;i<n;i++)           // Création du triangle de pascal
  40.  {
  41.    c[i][0] = 1;
  42.    c[i][i] = 1;
  43.    for (int j=1; j<(i-1);j++)
  44.      c[i][j] = c[i-1][j-1] + c[i-1][j];
  45.  
  46.  }
  47.  
  48.  
  49.  
  50.   /**** Triangle de sierpinski ****/
  51.  sf::Image Img(700,600,sf::Color(200,0,0)); // on crée une image vierge
  52.   for(int i=0;i<n;i++)          // on parcours chaque ligne du triangle de pascal
  53.     {
  54.       for (int j=0;j<n;j++)     // on parcours chaque colone du triangle de pasccal
  55.         {
  56.           if(estPaire(c[i][j])) // on donne une couleur aux nbre pairs
  57.                 {
  58.                   Img.SetPixel(i,j,sf::Color(j*i,j+i,j-i));
  59.                 }
  60.           else                  // et une autre aux nombres impairs
  61.             {
  62.               Img.SetPixel(i,j,sf::Color(200,0,0));
  63.              
  64.             }