jQuery
En savoir plus
Adobe Flex & Flash
En savoir plus
Développement Android
En savoir plus

Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !
| Page 1 | |||
| Auteur | Message | ||
|---|---|---|---|
| 1 visiteur sur ce sujet (1 Anonyme) | |||
| Page 1 | |||
Furzel
|
# Posté le 05/07/2007 à 18:11:17 | ||
|
Vive open arena !
|
Postez ici toutes vos créations autour du tapis de Sierpinski afin de garde le topic principale de cod'Art lisible
mon ptit carré de Sierpinski : http://img362.imageshack.us/img362/3910/captureaout14gy6.png et le code : Code : C # include <stdio.h> # include <stdlib.h> # include <SDL/SDL.h> # include <math.h> void pause() // fonction de pause pour avoir le temp de voir sa création { int continuer = 1; SDL_Event event; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer = 0; } } } int main () { SDL_Surface *carre=NULL, *ecran=NULL; SDL_Rect position; SDL_Rect position_00; int x,y,i,xx=1,yy=1; int nombre = 6; // Definition du nombre de carre de taille différente int cote=pow(3,nombre); // On definit le coté de manière a ce qu'il soit multiple de 3 position_00.x=0; position_00.y=0; 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(cote,cote,32,SDL_HWSURFACE); if (ecran==NULL) { fprintf(stderr,"Erreur d'inialisation du mode vidéo %s",SDL_GetError()); exit(EXIT_FAILURE); } SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,255,255,255)); SDL_Flip(ecran); for (i=0;i<nombre;i++) // La SDL est initialisé on entre dans la boucle principale { for (x=0;x<xx;x++) // Boucles pour afficher le bon nombre de carré à chaque fois for (y=0;y<yy;y++) { carre=SDL_CreateRGBSurface(SDL_HWSURFACE,cote/3,cote/3,32,0,0,0,0); // On cree la surface : un caré avec pour coté le tier du précédent SDL_FillRect(carre,NULL,SDL_MapRGB(ecran->format,0,0,0)); // on rempli de noir position.x=(1+(3*x))*(cote/3); // Calcul de la position vertical du carré position.y=(1+(3*y))*(cote/3); // Calcul de la position horizontal du carré SDL_BlitSurface(carre,NULL,ecran,&position); // On affiche enfin le carré SDL_Flip(ecran); } cote=cote/3; // on divise par 3 le coté de l'ancien carré pour passer a la taille en dessous xx=xx*3; // on va afficher 3 fois plus de carré horizontalement yy=yy*3; // on va afficher 3 fois plus de carré verticalement } pause(); return 0; } Et sinon un peu HS , mais j'ai utiliser le dit carré géneré par ce code en tant que masque de calque sur une autre image : http://programs.rednox.net/area51/FURZEL/tapis_color.png EDIT : Voila c'est commenter pour l'indentation j'ai le même problème a l'affichage pourtant il est indenter dans la source du message EDIT 2 : Mea culpa pour le : C , ra regle l'indentation de surplus
Édité
le 05/07/2007 à 20:55:32
par Furzel
|
||
| Publicité | # Posté le 05/07/2007 à 18:11:17 | ||
|
|
|||
anonyme
|
# Posté le 05/07/2007 à 19:13:15 | ||
|
|
Même remarque que sur l'autre topic, tu peux pas rendre ton code plus présentable ? (commentaires par exemple, ensuite c'est peut-être moi mais j'ai pas d'indentation).
Ça serait gentil pour ceux qu'il intéresse .
|
||
ne0chaotic
|
# Posté le 05/07/2007 à 20:17:49 | ||
[ 26.457239] Kernel Panic![]()
|
Pourquoi pas code : C ? Parce que là...
|
||
Baptiste Wicht
|
# Posté le 06/07/2007 à 07:57:01 | ||
|
Certes...
|
Voilà, une petite version en Java :
Voici le code : Code : Java package sierpinski;
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import javax.swing.JFrame; import javax.swing.JPanel; public class Tapis extends JPanel { private static final long serialVersionUID = 6899161860200488093L; public Tapis(){ super(); setOpaque(false); setBackground(Color.white); setPreferredSize(new Dimension(500,500)); } public static void main(String[] args) { JFrame frame = new JFrame("Tapis de sierpinski"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(new Tapis()); frame.pack(); frame.setVisible(true); } public void paint(Graphics g) { int nbreX = 1; int nbreY = 1; int nbre = 3; int tailles = 6; int cote= (int)Math.pow(nbre, tailles); g.setColor(Color.white); g.fillRect(0, 0, getSize().width, getSize().height); g.setColor(Color.black); for (int i = 0; i < tailles; i++){ for (int x = 0; x < nbreX; x++){ for (int y =0; y < nbreY; y++){ int xPosition = (1 + (nbre * x)) * (cote / nbre); int yPosition = (1 + (nbre * y)) * (cote / nbre); g.fillRect(xPosition, yPosition, cote / nbre, cote / nbre); } } cote /= nbre; nbreX *= nbre; nbreY *= nbre; } super.paint(g); } } Par contre, j'ai pas trouvé de valeurs qui font que ce soit plus joli, donc j'ai gardé les mêmes valeurs que toi Furzel. |
||
guimers8
|
# Posté le 06/07/2007 à 14:29:26 | ||
Cocoa/ObjC![]()
Ville : Grenoble |
|||
Pmol
|
# Posté le 07/07/2007 à 14:35:03 | ||
Mangez du Python![]()
Études : IUT A Lyon 1 |
http://the.pmol.free.fr/codart/tapisSierpinski/
La coloration se fait en fonction de la taille des carrés (bon j'ai pas réussi à faire quelque chose de joli).
Édité
le 12/07/2007 à 18:41:25
par Pmol
|
||
Artefact2
|
# Posté le 08/07/2007 à 01:38:01 | ||
|
Ville : Reims |
|||
guimers8
|
# Posté le 08/07/2007 à 02:10:47 | ||
Cocoa/ObjC![]()
Ville : Grenoble |
Je l'ai plus, j'ai changé les combinaisons pour les couleurs…
![]() Mac mini, Intel Core Duo à 1,83GHz avec 2 Go RAM. iPhone 3GS 32 Go |
||
Cygal
|
# Posté le 08/07/2007 à 07:20:27 | ||
X-No-Archive: yes![]()
|
Et alors ? ^_^
Ça empêche d'avoir le reste ? |
||
guimers8
|
# Posté le 08/07/2007 à 11:47:49 | ||
Cocoa/ObjC![]()
Ville : Grenoble |
C'est le même que tout en haut, en C avec la SDL.
![]() Mac mini, Intel Core Duo à 1,83GHz avec 2 Go RAM. iPhone 3GS 32 Go |
||
Artefact2
|
# Posté le 10/07/2007 à 15:51:40 | ||
|
Ville : Reims |
Ca y est, j'ai enfin réussi le mien après moultes péipéries... Pas trop facile quand on ne maîtrise ni le langage ni les classes graphiques
Et voici le code : Code : C# using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace TapisDeSierpinski { public partial class Form1 : Form { public Form1() { InitializeComponent(); // On définit manuellement la taille du contrôle this.Width = 600; this.Height = 600; } private void Form1_Load(object sender, EventArgs e) { // On paramètre la picturebox lors du chargement du formulaire pictureBox1.Dock = DockStyle.Fill; pictureBox1.BackColor = Color.Black; // On connecte l'évènement du picturebox1_paint() pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint); // On l'ajoute au formulaire this.Controls.Add(pictureBox1); } private void pictureBox1_Paint(object sender, PaintEventArgs e) { // On initialise le Tapis Bitmap Fond = Images.Couleurs; Tapis sierpinski = new Tapis(new TextureBrush(Fond), e); // On le dessine ;) sierpinski.DrawTapis(new Point(0, 0), pictureBox1.Width, pictureBox1.Height, 5); } public class Tapis { // Le brush qui nous sert à créer les carrés private Brush DrawingBrush; // Nous permet de créer des rectangles, lignes, ... private Graphics g; public Tapis(Brush Brush, PaintEventArgs e) { // On assigne les valeurs obtenues DrawingBrush = Brush; g = e.Graphics; } public void DrawTapis(Point Sommet, int Longueur, int Largeur, int Iterations) { // Si on a fait le nombre nécessaire d'itérations, on quitte :) if (Iterations == 0) return; // On définit les variables d'usages, pour aller plus vite int X = Sommet.X; int Y = Sommet.Y; int LongueurPetit = (int)Longueur / 3; int LargeurPetit = (int)Largeur / 3; // On crée les trois points restants Point[] Sommets = { new Point(X + LongueurPetit, Y + LargeurPetit), new Point(X + Longueur - LongueurPetit, Y + LargeurPetit), new Point(X + Longueur - LongueurPetit, Y + Largeur - LargeurPetit), new Point(X + LongueurPetit, Y + Largeur - LargeurPetit) }; // On dessine notre rectangle g.FillPolygon(DrawingBrush, Sommets); // On fait les récursions pour les huit rectangles restants DrawTapis(new Point(X, Y), LongueurPetit, LargeurPetit, Iterations - 1); DrawTapis(new Point(X + LongueurPetit, Y), LongueurPetit, LargeurPetit, Iterations - 1); DrawTapis(new Point(X + LongueurPetit*2, Y), LongueurPetit, LargeurPetit, Iterations - 1); DrawTapis(new Point(X, Y + LargeurPetit), LongueurPetit, LargeurPetit, Iterations - 1); DrawTapis(new Point(X, Y + LargeurPetit * 2), LongueurPetit, LargeurPetit, Iterations - 1); DrawTapis(new Point(X + LongueurPetit, Y + LargeurPetit * 2), LongueurPetit, LargeurPetit, Iterations - 1); DrawTapis(new Point(X + LongueurPetit * 2, Y + LargeurPetit * 2), LongueurPetit, LargeurPetit, Iterations - 1); DrawTapis(new Point(X + LongueurPetit * 2, Y + LargeurPetit), LongueurPetit, LargeurPetit, Iterations - 1); } } } } Bye et merci
|
||
guimers8
|
# Posté le 10/07/2007 à 19:35:49 | ||
Cocoa/ObjC![]()
Ville : Grenoble |
Je rêve ou tu as dessiné ton tapis avec comme motif une fractale de Lyapunov ?
![]() Mac mini, Intel Core Duo à 1,83GHz avec 2 Go RAM. iPhone 3GS 32 Go |
||
Artefact2
|
# Posté le 10/07/2007 à 19:54:06 | ||
|
Ville : Reims |
Peut être, c'est une image plaquée que j'ai prise parce que ca rendait bien
|
||
Nanoc
|
# Posté le 11/07/2007 à 11:23:23 | ||
Aimez-vous le C++ ?![]()
|
Je vous propose une n-ième variation sur le même thème.
Un tapis de Sierpinski mappé sur une sphère. J'aime bien l'effet que ça donne.
Pour le faire, c'est très simple. On fait un tapis via un des algos proposé ci-dessus et on plaque cette image sur une sphère OpenGL. Auteur d'un livre : Programmez avec le langage C++ Mes tutos : [C++] Cours officiel pour débutants, [C++] Manipulateurs de flux, [C++] Pointeurs sur fonctions, [C++] Maîtriser le compilateur g++, [C++] Déboguer avec Code::Blocks |
||
Artefact2
|
# Posté le 11/07/2007 à 12:00:40 | ||
|
Ville : Reims |
Original
|
||
Hilaia
|
# Posté le 11/07/2007 à 12:44:52 | ||
C'est la fin du début...![]() Groupe : Anciens
Ville : Profondeville |
Bien joué Nanoc
C'est superbe Dropbox: Obtenez 250Mo supplémentaires en étant parrainé sur ce service de synchronisation de données. Peut servir à tout, et juste génial pour gérer ses projets gratuitement. |
||
nabmoloc
|
# Posté le 11/07/2007 à 18:27:12 | ||
![]() |
Pour ceux qui ont envie de s'amuser un peu avec openGL on peut faire la même chose mais avec des cubes dans l'espace
"Il n'existe que deux choses infinies, l'univers et la bêtise humaine... mais pour l'univers, je n'ai pas de certitude absolue." Albert Einstein "Nombreux sont les vivants qui mériteraient la mort et les morts qui mériteraient la vie" JRR Tolkien |
||
Nanoc
|
# Posté le 11/07/2007 à 19:34:22 | ||
Aimez-vous le C++ ?![]()
|
Oui ça s'appelle l'éponge de Menger
Auteur d'un livre : Programmez avec le langage C++ Mes tutos : [C++] Cours officiel pour débutants, [C++] Manipulateurs de flux, [C++] Pointeurs sur fonctions, [C++] Maîtriser le compilateur g++, [C++] Déboguer avec Code::Blocks |
||
guimers8
|
# Posté le 12/07/2007 à 10:54:48 | ||
Cocoa/ObjC![]()
Ville : Grenoble |
Vraiment excellent la sphère !
Le rendu est meilleur en "trouant" le cube qu'en mettant une image dessus. ![]() Mac mini, Intel Core Duo à 1,83GHz avec 2 Go RAM. iPhone 3GS 32 Go |
||
Nanoc
|
# Posté le 12/07/2007 à 10:56:59 | ||
Aimez-vous le C++ ?![]()
|
Oui bien sûr. Plaquer une image de tapis sur un cube, c'est tricher.
Auteur d'un livre : Programmez avec le langage C++ Mes tutos : [C++] Cours officiel pour débutants, [C++] Manipulateurs de flux, [C++] Pointeurs sur fonctions, [C++] Maîtriser le compilateur g++, [C++] Déboguer avec Code::Blocks |
||
geenux
|
# Posté le 23/02/2008 à 12:02:16 | ||
Vive Qt![]()
Ville : Brest |
Bon voilà, ma première fractale, mon premier programme c++ utilisant la SFML.
voilà le rendu de mon tapis: Tapis de Sierpinski et voilà le code: Code : C++ - Afficher / masquer les numéros de ligne
Édité
le 23/02/2008 à 12:03:33
par geenux
|
||
robocop
|
# Posté le 21/10/2008 à 21:09:20 | ||
|
Études : Lycée Condorcet - Paris 9ème |
Ma version en ocaml, rapidement, et de façon moche :
http://quentin.cormier.free.fr/blog/?p [...] iski-en-ocaml Code : OCaml
Édité
le 22/10/2008 à 17:02:40
par robocop
|
||
Retour au forum "Autres langages, outils et approches" ou à la liste des forums
