Les mathématiques entières peuvent générer des motifs étonnants lorsqu'elles sont disposées sur une grille. Même les fonctions les plus élémentaires peuvent donner des designs incroyablement élaborés!
Votre challenge
Ecrivez 3 corps de fonction tweetable (c'est-à-dire 140 caractères ou moins) pour les valeurs rouge, verte et bleue pour une image 1024x1024.
Les entrées des fonctions seront deux entiers i (numéro de colonne pour le pixel donné) et j (numéro de ligne pour le pixel donné) et la sortie sera un court-circuit non signé compris entre 0 et 1023 inclus, ce qui représente le montant de la valeur donnée. couleur présente dans le pixel (i, j).
Par exemple, les trois fonctions suivantes produisent l'image ci-dessous:
/* RED */
return (unsigned short)sqrt((double)(_sq(i-DIM/2)*_sq(j-DIM/2))*2.0);
/* GREEN */
return (unsigned short)sqrt((double)(
(_sq(i-DIM/2)|_sq(j-DIM/2))*
(_sq(i-DIM/2)&_sq(j-DIM/2))
));
/* BLUE */
return (unsigned short)sqrt((double)(_sq(i-DIM/2)&_sq(j-DIM/2))*2.0);
/* RED */
return i&&j?(i%j)&(j%i):0;
/* GREEN */
return i&&j?(i%j)+(j%i):0;
/* BLUE */
return i&&j?(i%j)|(j%i):0;
Les règles
- Étant donné ce code C ++ , remplacez-le dans vos fonctions. J'ai fourni quelques macros et inclus la bibliothèque, et vous pouvez inclure complex.h. Vous pouvez utiliser toutes les fonctions de ces bibliothèques et / ou de mes macros. Veuillez ne pas utiliser de ressources externes au-delà de cela.
Si cette version ne fonctionne pas pour vous, assurez-vous de compiler avec:
g++ filename.cpp -std=c++11
Si cela ne fonctionne pas, veuillez utiliser la version alternative en utilisant des caractères non signés au lieu de courts non signés.
Michaelangelo a fourni une version de sortie couleur nettoyée 24 bits ou 48 bits .
- Vous pouvez implémenter votre propre version dans un autre langage, mais celle-ci doit se comporter de la même manière que la version C ++ fournie. Seules les fonctions des éléments intégrés de C ++, de la bibliothèque ou des macros fournies peuvent être utilisées pour la rendre juste.
- Publiez uniquement vos trois corps de fonction - veuillez ne pas inclure mon code dans votre message
- Veuillez inclure une version plus petite ou une copie intégrée de votre image. Ils sont convertis au format ppm et doivent éventuellement être convertis en un autre format pour une visualisation correcte sur stackexchange.
- Les corps de fonction (signature non comprise) doivent comporter 140 caractères au maximum.
- Ceci est un concours de popularité - la plupart des votes sont gagnants
la source
Réponses:
Mandelbrot 3 x 133 caractères
La première chose qui me vint à l'esprit fut "Mandelbrot!".
Oui, je sais qu'il y a déjà une soumission de mandelbrot. Après avoir confirmé que je pouvais le faire moi-même en-dessous de 140 caractères, j'ai pris les astuces et optimisations de cette solution dans la mienne (merci à Martin et Todd). Cela laissait de la place pour choisir un emplacement et un zoom intéressants, ainsi qu’un joli thème de couleur:
132 caractères au total
J'ai essayé de le réduire à 140 pour les 3 canaux. Il y a un peu de bruit de couleur près du bord, et l'emplacement n'est pas aussi intéressant que le premier, mais: 132 caractères
la source
Nappes
Plat
J'ai commencé par mettre en perspective un motif à carreaux / vichy comme une nappe sans limite:
Ondulation
Ensuite, j'ai introduit une ondulation (perspective non strictement correcte, mais toujours en 140 caractères):
Couleur
Ensuite, j'ai rendu certaines couleurs plus fines pour donner des détails sur une gamme plus large d’échelles et pour rendre la photo plus colorée ...
En mouvement
Réduire légèrement le code permet de définir une phase d'onde P avec 2 décimales, ce qui suffit pour des images suffisamment proches pour une animation fluide. À ce stade, j’ai réduit l’amplitude afin d’éviter le mal de mer et redéfini l’ensemble de l’image de 151 pixels supplémentaires (au prix d’un caractère supplémentaire) afin de faire disparaître le repliement du spectre. Le crénelage animé est hypnotique.
la source
#define P
. Il fallait jouer au golf pour permettre les personnages supplémentaires#define P 6.03
.Peintre au hasard
Voici une entrée basée sur le hasard. Pour environ 0,1% des pixels, il choisit une couleur aléatoire, pour les autres, il utilise la même couleur qu'un pixel adjacent aléatoire. Notez que chaque couleur le fait de manière indépendante. Il ne s’agit donc que d’une superposition d’images aléatoires de couleur verte, bleue et rouge. Pour obtenir des résultats différents sur différentes exécutions, vous devez ajouter
srand(time(NULL))
à lamain
fonction.Maintenant, pour quelques variations.
En sautant des pixels, nous pouvons le rendre un peu plus flou.
Et puis, nous pouvons changer lentement les couleurs, où les débordements se traduisent par des changements brusques qui font que cela ressemble encore plus à des coups de pinceau.
Les choses que j'ai besoin de comprendre:
srand
dans ces fonctions sans obtenir une erreur de segmentation.Vous pouvez également rendre la marche aléatoire isotrope, comme
pour te donner
Plus de peintures aléatoires
J'ai joué un peu plus avec cela et créé d'autres peintures aléatoires. Tous ne sont pas possibles dans les limites de ce défi, je ne souhaite donc pas les inclure ici. Mais vous pouvez les voir dans cette galerie imgur avec quelques descriptions de la façon dont je les ai produites.
Je suis tenté de développer toutes ces possibilités dans un cadre et de le mettre sur GitHub. (Ce genre de choses n'existe pas déjà, mais c'est amusant quand même!)
la source
Certaines choses swirly pointy
Oui, je savais exactement comment l'appeler.
EDIT: n'utilise plus
pow
. EDIT 2: @PhiNotPi a fait remarquer que je n'ai pas besoin d'utiliser autant d'abs.Vous pouvez changer les points de référence assez facilement pour obtenir une image différente:
@EricTressler a souligné que Batman était dans mes images.
la source
Bien sûr, il doit y avoir une soumission de Mandelbrot.
Essayer d'améliorer le jeu de couleurs maintenant. Est-ce une erreur si je définis le calcul comme une macro
red_fn
et que je l' utilise dans les deux autres, de sorte que j'ai plus de caractères pour la sélection de couleurs fantaisie en vert et en bleu?Edit: Il est très difficile de trouver des schémas de couleurs corrects avec ces quelques octets restants. Voici une autre version:
Et selon la suggestion de githubphagocyte et les améliorations de Todd Lehman, nous pouvons facilement choisir des sections plus petites:
Par exemple
donne
la source
Julia définit
S'il y a un Mandelbrot, il devrait y avoir aussi un set Julia.
Vous pouvez passer des heures à peaufiner les paramètres et les fonctions, ce qui en fait un modèle rapide et élégant.
Inspiré de la participation de Martin.
Voulez-vous du RNG?
OK, le commentaire de Sparr m'a mis sur la piste pour randomiser les paramètres de ce petit Julias. J'ai d'abord essayé de faire du piratage au niveau des bits avec le résultat de,
time(0)
mais le C ++ n'autorisant pas les littératures hexadécimales à virgule flottante, il s'agissait donc d'une impasse (du moins, à ma connaissance,). J'aurais pu utiliser des castings lourds pour y parvenir, mais cela n'aurait pas été compris dans les 140 octets.De toute façon, il ne me restait plus beaucoup de place, alors j’ai dû laisser tomber la Julia rouge pour pouvoir mettre mes macros et disposer d’un RNG plus conventionnel (
time
graine d et réellerand()
, woohoo!).Oups, il manque quelque chose. Évidemment, ces paramètres doivent être statiques ou vous aurez des résultats étranges (mais drôle, peut-être que je vais étudier un peu plus tard si je trouve quelque chose d’intéressant).
Nous y sommes donc, avec uniquement les canaux vert et bleu:
Ajoutons maintenant un motif rouge simple pour combler le vide. Pas vraiment imaginatif, mais je ne suis pas un programmeur graphique ... pour le moment :-)
Et enfin le nouveau code avec des paramètres aléatoires:
Il y a encore de la place maintenant ...
la source
Celui-ci est intéressant car il n'utilise pas du tout les paramètres i, j. Au lieu de cela, il se souvient de l'état d'une variable statique.
la source
la source
Buddhabrot (+ Antibuddhabrot)
Edit: C'est un véritable Buddhabrot maintenant!
Edit: j'ai réussi à limiter l'intensité de la couleur dans la limite d'octet, de sorte qu'il n'y ait plus de pixels faussement noirs en raison du débordement.
Je voulais vraiment m'arrêter après quatre heures ... mais ...
Ceci est légèrement compressé pendant le téléchargement (et réduit lors de l'intégration), donc si vous voulez admirer tous les détails, voici l'intéressant recadrage 512x512 (qui n'est pas compressé et est affiché dans sa taille réelle):
Merci à githubphagocyte pour l'idée. Cela nécessitait un abus assez compliqué des trois fonctions de couleur:
Il reste quelques octets pour un meilleur jeu de couleurs, mais jusqu'à présent, je n'ai rien trouvé qui vaille mieux que l'image en niveaux de gris.
Le code, tel qu'il est donné, utilise 4096 x 4096 points de départ et effectue jusqu'à 500 000 itérations sur chacune d'elles pour déterminer si les trajectoires s'échappent ou non. Cela a pris entre 6 et 7 heures sur ma machine. Vous pouvez obtenir des résultats corrects avec une grille de 2k par 2k et 10k itérations, ce qui prend deux minutes, et même une grille de 1k par 1k avec 1k itérations est très jolie (cela prend environ 3 secondes). Si vous souhaitez modifier ces paramètres, vous devez modifier quelques éléments:
5e5
dansBL
votre nombre d'itérations.4096
dansRD
la résolution désirée et1024.
dansGR
le même facteur pour maintenir la mise à l' échelle correcte.return c[i][j]
in dans laGR
mesure où cela contient uniquement le nombre absolu de visites de chaque pixel. La couleur maximale semble être la plupart du temps indépendante du nombre d'itérations et évolue linéairement avec le nombre total de points de départ. Donc, si vous voulez utiliser une grille de 1k sur 1k, vous pouvez le fairereturn c[i][j]*16;
ou similaire, mais ce facteur nécessite parfois quelques manipulations.Pour ceux qui ne connaissent pas Buddhabrot (comme moi il y a quelques jours), il est basé sur le calcul de Mandelbrot, mais l'intensité de chaque pixel correspond à la fréquence de visite de ce pixel dans les itérations des trajectoires d'échappement. Si nous comptons les visites lors de trajectoires non échappées, c'est un Antibuddhabrot. Il existe une version encore plus sophistiquée appelée Nebulabrot dans laquelle vous utilisez une profondeur de récursivité différente pour chaque canal de couleur. Mais je laisserai cela à quelqu'un d'autre. Pour plus d' informations, comme toujours, Wikipedia .
À l'origine, je ne faisais pas la distinction entre les trajectoires d'échappement et les trajectoires sans fuite. Cela a généré un complot qui est l'union d'un Buddhabrot et d'un Antibuddhabrot (comme indiqué par githubphagocyte).
Celui-ci ressemble un peu à une photo fanée ... J'aime ça.
la source
Sierpinski Pentagon
Vous avez peut-être vu la méthode du jeu du chaos consistant à approximer le triangle de Sierpinski en traçant des points à mi-chemin d'un sommet choisi au hasard. Ici, j'ai adopté la même approche en utilisant 5 sommets. Le code le plus court sur lequel je pouvais me résoudre incluait le codage en dur des 5 sommets, et il n’était pas question pour moi d’adapter tout cela à 140 caractères. J'ai donc délégué le composant rouge à un fond simple et utilisé l'espace disponible dans la fonction rouge pour définir une macro afin de ramener les deux autres fonctions à moins de 140 également. Donc, tout est valable au prix de ne pas avoir de composant rouge dans le pentagone.
Merci à Martin Büttner pour l’idée mentionnée dans les commentaires de la question sur la définition d’une macro dans une fonction à utiliser ensuite dans une autre, ainsi que pour l’utilisation de la mémoire pour remplir les pixels dans un ordre arbitraire plutôt que de se limiter à l’ordre de trame de la fonction principale .
L'image dépasse 500 Ko. Elle est donc automatiquement convertie en jpg par échange de pile. Cela brouille certains des détails les plus fins. J'ai donc également inclus le quart supérieur droit sous forme de png pour montrer le look original:
la source
Partition
Sierpinski musique. : D Les gars sur le chat disent qu'il ressemble plus au papier perforé pour les boîtes à musique.
Quelques détails sur la façon dont cela fonctionne ... euh, il ne s'agit en fait que d'un zoom avant sur le rendu de certains triangles de Sierpinski ondulés. L'aspect de la partition (et son aspect bloc) est le résultat d'une troncature d'entier. Si je change la fonction rouge à, par exemple,
la troncature est supprimée et nous obtenons le rendu en pleine résolution:
Alors oui, c'est intéressant.
la source
Quelqu'un at-il un générateur de diagramme aléatoire de Voronoï ?
OK, celui-ci m'a donné du fil à retordre. Je pense que c’est plutôt bien, même si les résultats ne sont pas aussi artistiques que d’autres. C'est l'affaire avec le hasard. Certaines images intermédiaires semblent peut-être meilleures, mais je voulais vraiment avoir un algorithme pleinement fonctionnel avec des diagrammes de voronoï.
Modifier:
Ceci est un exemple de l'algorithme final. L'image est fondamentalement la superposition de trois diagrammes de voronoï, un pour chaque composante de couleur (rouge, vert, bleu).
Code
non golfé, version commentée à la fin
Il m'a fallu beaucoup d'efforts, alors j'ai envie de partager les résultats à différentes étapes, et il y en a de bonnes (incorrectes) à montrer.
Première étape: placer quelques points au hasard, avec
x=y
Je l'ai converti en jpeg parce que le png original était trop lourd pour upload (
>2MB
), je parie que c'est bien plus de 50 nuances de gris!Deuxièmement: avoir une meilleure coordonnée y
Je ne pouvais pas se permettre d'avoir une autre table de coordonnées générées au hasard pour l'
y
axe, donc je besoin d' un moyen simple d'obtenir « au hasard » les dans le moins de caractères possible. Je suis allé en utilisant lesx
coordonnées d'un autre point de la table, en faisant un bitwiseAND
sur l'index du point.3ème: je ne m'en souviens pas mais ça commence à bien
Mais à cette époque, j’avais dépassé les 140 personnages, j’avais donc besoin de beaucoup jouer au golf.
4ème: lignes de balayage
Je plaisante, ce n'est pas voulu, mais plutôt cool, il me semble.
Toujours en train de réduire la taille de l'algorithme, je suis fier de présenter:
Édition StarFox
Voronoï instagram
5ème: augmenter le nombre de points
J'ai maintenant un morceau de code de travail, passons donc de 25 à 60 points.
C'est difficile à voir à partir d'une seule image, mais les points sont presque tous situés dans la même
y
plage. Bien sûr, je n'ai pas changé l'opération bitwise,&42
c'est bien mieux:Et nous sommes au même point que la toute première image de ce post. Expliquons maintenant le code pour les rares qui seraient intéressés.
Ungolfed et expliqué le code
Merci d'avoir lu jusqu'ici.
la source
La fractale de Lyapunov
La chaîne utilisée pour générer ceci était AABAB et l'espace de paramètre était [2,4] x [2,4]. ( explication de la chaîne et de l'espace de paramètre ici )
Avec un espace de code limité, je pensais que cette coloration était plutôt cool.
J'ai également fait une variante de l'ensemble Mandelbrot. Il utilise une carte similaire à celle de Mandelbrot. Dites M (x, y) est la carte de Mandelbrot. Alors M (sin (x), cos (y)) est la carte que j’utilise, et au lieu de rechercher les valeurs qui échappent, j’utilise x, et y car elles sont toujours délimitées.
MODIFIER
Après beaucoup de douleur, j'ai finalement réussi à créer un gif de la deuxième image en train de se transformer. C'est ici:
la source
Parce que les licornes.
Je ne pouvais pas utiliser la version OP avec
unsigned short
des valeurs de couleur allant jusqu'à 1023. Donc, jusqu'à ce que cela soit corrigé, voici une version utilisantchar
une valeur de couleur maximale de 255.la source
Collines Logistiques
Les fonctions
Ungolfed
Toutes les définitions doivent correspondre à BL sous 140 caractères. Voici la version non-golfée de l'algorithme bleu, légèrement modifié:
Là où les valeurs de x tombent le plus souvent pour une valeur donnée de r (j), le graphique devient plus clair (généralement décrit comme plus sombre).
la source
Diffusion Agrégation Limitée
J'ai toujours été fasciné par l' agrégation limitée par la diffusion et le nombre de façons dont elle apparaît dans le monde réel.
J'ai eu du mal à écrire ceci en seulement 140 caractères par fonction, j'ai donc dû rendre le code horrible (ou beau, si vous aimez les choses comme
++d%=4
etfor(n=1;n;n++)
). Les trois fonctions de couleur s'appellent et définissent les macros à utiliser. La lecture est donc difficile, mais chaque fonction comporte un peu moins de 140 caractères.Pour visualiser comment les particules s'agrègent progressivement, j'ai produit des instantanés à intervalles réguliers. Chaque image a été produite en remplaçant le 1
for(n=1;n;n++)
par 0, -1 << 29, -2 << 29, -3 << 29, 4 << 29, 3 << 29, 2 << 29, 1 << 29, 1. Cela le maintient juste sous la limite de 140 caractères pour chaque exécution.Vous pouvez voir que les agrégats qui se développent proches se privent les uns des autres de particules et croissent plus lentement.
En modifiant légèrement le code, vous pouvez voir les particules restantes qui ne sont pas encore attachées aux agrégats. Cela montre les régions plus denses où la croissance va se produire plus rapidement et les régions très clairsemées entre les agrégats où aucune croissance ne peut plus se produire car toutes les particules ont été épuisées.
Cela peut être animé de la même manière qu'auparavant:
la source
Spirale (140 exactement)
Cela correspond exactement à 140 caractères si vous n'incluez pas les en-têtes et les crochets de la fonction. C'est autant de complexité en spirale que je pourrais tenir dans la limite de personnage.
J'ai progressivement construit sur une simple spirale, en ajoutant des motifs sur les bords de la spirale et en expérimentant comment différentes spirales pourraient être combinées pour donner un aspect cool. Voici une version non-golfée avec des commentaires expliquant le rôle de chaque pièce. Jouer avec les paramètres peut produire des résultats intéressants.
Jouer avec les paramètres:
Ici, les spirales sont alignées mais présentent des motifs de bord différents. Au lieu des arêtes de blocs dans l'exemple principal, elle a des arêtes entièrement composées d'ondes de péché.
Ici, le dégradé a été supprimé:
Une animation (
qui, pour une raison quelconque, ne semble pas boucler une fois après l'avoir téléchargée, désolée. J'ai également dû la réduire. Ouvrez-la dans un nouvel onglet si vous avez raté l'animation):Et voici l' album imgur avec toutes les images qu'il contient . J'aimerais voir si quelqu'un peut trouver d'autres motifs en spirale sympas. En outre, je dois dire que c’est de loin l’un des défis les plus intéressants que j’ai jamais vu. Prendre plaisir!
EDIT: Voici quelques fonds réalisés à partir de ces spirales avec des paramètres modifiés.
De plus, en combinant mes motifs de bords en spirale avec certaines des fractales que j'ai vues ici grâce à l'utilisation de xor / et / ou d'opérations, voici une dernière spirale:
la source
Hommage à un classique
V1 : Inspirée par "Be happy" de DreamWarrior, cette soumission simple incorpore une petite image pixel-art dans chaque canal de couleur. Je n'ai même pas eu à jouer au code!
V2 : maintenant avec un code considérablement plus court et une bordure noire épaisse n'isolant que "l'écran de jeu".
V3 : vaisseau spatial, balle, aliens endommagés et bordure bleue, oh mon dieu! Essayer de viser cela , à peu près.
Je suis tombé par hasard sur un montage de Umber Ferrule dont l'avatar m'a inspiré pour ajouter une autre entrée basée sur le pixel art. Puisque l'idée de base du code est en grande partie similaire à celle de Space Invaders, je l'ajoute à cette entrée, bien que les deux aient clairement des points de défi différents. Pour ce dernier, obtenir le bon rose (au détriment du blanc) et le fait qu’il s’agisse d’un sprite plutôt grand ont été de bons défis. Les caractères d'échappement hexadécimaux (
\xFF
etc.) du canal rouge représentent les caractères correspondants dans le fichier source (le canal rouge du fichier source contient des données binaires), alors que les caractères d'échappement en octal sont littéraux (c'est-à-dire présents dans le fichier source).la source
Peinture d'action
Je voulais essayer de recréer quelque chose de similaire au travail de Jackson Pollock - des gouttes d'eau et de la peinture coulée sur une toile horizontale. Bien que j'aie aimé les résultats, le code a été beaucoup trop long à poster sur cette question et mes meilleurs efforts n'ont encore réduit que 600 octets environ. Ainsi, le code publié ici (qui a des fonctions respectives de 139 octets, 140 octets et 140 octets) a été produit avec une aide considérable de la part de certains génies du chat . Grand merci à:
pour une session de golf en groupe sans répit.
La macro E (q) est utilisée dans les fonctions RD et GR. Changer la valeur de l'argument change la façon dont les composants rouge et vert des couleurs changent. La macro J se termine par un nombre qui sert à déterminer l'ampleur de la modification de la composante bleue, ce qui affecte les composantes rouge et verte car elles sont calculées à partir de celle-ci. J'ai inclus quelques images avec les arguments rouge et vert de E variés pour montrer la variété de combinaisons de couleurs possibles. Survolez les images pour les valeurs rouge et verte si vous souhaitez les exécuter vous-même.
Toutes ces images peuvent être visualisées en taille réelle si vous les téléchargez. La taille du fichier est petite, car la couleur plate convient à l'algorithme de compression PNG. Aucune compression avec perte n'était donc nécessaire pour télécharger sur le site.
Si vous souhaitez voir des images de différentes étapes du processus de golf alors que nous avons essayé différentes choses, vous pouvez regarder dans le chat de peinture d'action .
la source
Je pensais jouer avec les paramètres de ce code ... Tout le mérite revient à @Manuel Kasten. Ce sont tellement cool que je ne pouvais pas résister à poster.
BubbleGumRupture http://i57.tinypic.com/3150eqa.png
SeussZoom http://i59.tinypic.com/am3ypi.png
SeussEternalForest http://i61.tinypic.com/35akv91.png
la source
Edit: C’est maintenant une réponse valable, grâce aux déclarations forward de
GR
etBL
.S'amuser avec la séquence Q de Hofstadter! Si nous utilisons la distance radiale d'un point comme entrée et la sortie comme couleur inverse, nous obtenons quelque chose qui ressemble à du vinyle coloré.
La séquence est très similaire à la séquence de Fibonacci, mais au lieu de revenir en arrière de 1 à 2 étapes, vous prenez les deux valeurs précédentes pour déterminer le retour avant de prendre la somme. Il se développe grossièrement linéaire, mais de temps en temps, il y a une rafale de chaos (à des intervalles croissants) qui se résout ensuite en une séquence presque linéaire avant la prochaine rafale:
Vous pouvez voir ces ondulations dans l'image après les régions qui ont une couleur très "plate".
Bien sûr, utiliser une seule couleur est ennuyeux.
Maintenant pour le code. J'ai besoin de la fonction récursive pour calculer la séquence. Pour ce faire, je l'utilise
RD
chaque fois quej
c'est négatif. Malheureusement, cela ne laisse pas assez de caractères pour calculer la valeur du canal rouge lui-même, doncRD
appelle à son tourGR
avec un décalage pour produire le canal rouge.Bien sûr, c’est à peu près l’utilisation la plus simple possible de la séquence, et il reste encore beaucoup de caractères. N'hésitez pas à l'emprunter et à faire d'autres choses folles avec!
Voici une autre version où la limite et les couleurs sont déterminées par la séquence Q. Dans ce cas, il y avait assez de place
RD
pour que je n'ai même pas besoin de la déclaration anticipée:la source
Ceci calcule la transformation de Joukowsky d'un ensemble de cercles concentriques centrés sur un point légèrement décalé par rapport à l'origine. J'ai légèrement modifié les intensités dans le canal bleu pour donner un peu de variation de couleur.
la source
Objectif c
Réécrivez le code C ++ dans Objective-C parce que je ne pouvais pas le compiler ... Il donnait les mêmes résultats que les autres réponses lorsque je courais sur mon iPad, alors tout va bien.
Voici ma soumission:
Le code derrière est assez simple:
Vous pouvez zoomer sur les carrés en les multipliant
i
etj
par0.5
,0.25
etc. avant qu'ils ne soient traités.la source
x^(x-y)^y
(cela m'a jeté aussi la première fois). Si vous avez des fonctionnalités iOS, voici mon code: gist.github.com/Jugale/28df46f87037d81d2a8fSierpinski Paint Splash
Je voulais jouer plus avec les couleurs, donc j'ai continué à changer mon autre réponse (la swirly) et finalement j'ai fini avec ça.
C'est mon avatar maintenant. : P
la source
Je me sens obligé de soumettre cette entrée que j'appellerai "comportement indéfini", ce qui illustrera ce que fait votre compilateur avec les fonctions censées renvoyer une valeur mais ne:
Tous les pixels noirs:
Pixels pseudo-aléatoires:
Et bien sûr, une foule d'autres résultats possibles en fonction de votre compilateur, ordinateur, gestionnaire de mémoire, etc.
la source
sensationnel
Juste quelques trigonométrie et astuces macro bizarres.
RD:
GR:
BL:
EDIT: si ce
M_PI
n’est pas autorisé car uniquement sur les systèmes compatibles POSIX, il peut être remplacé par le littéral3.14
.la source
acos(-1)
est un bon remplacement pourM_PI
.Je ne suis pas bon en maths. J'ai toujours été pauvre élève en classe de mathématiques. Alors j'ai fait simple.
J'ai utilisé le code Javascript modifié de l'utilisateur 1455003 . Et ceci est mon code complet .
Il est très court pour que les trois fonctions tiennent dans un tweet.
Une autre fonction très courte. J'ai trouvé ce motif sierpinski (et un motif tangent) en jouant avec diverses fonctions mathématiques. C'est le code complet
la source
i&j
Rend juste le triangle de Sierpinski en fait. Ce qui est génial .JavaScript
Une autre version. les corps de fonction sont tweetables.
Fonction de rendu d'image révisée. draw (rgbFunctions, setCloseEvent);
Violet
la source
Peintre planétaire
Inspiré par Martin superbe entrée , il s'agit d'une approche différente. Au lieu d'ensemencer de manière aléatoire une partie des pixels, je commence par le coin supérieur gauche sous le nom de RVB (512 512 512), puis effectue des marches aléatoires sur chaque couleur à partir de là. Le résultat ressemble à quelque chose d'un télescope (imo).
Chaque pixel prend la moyenne des pixels au-dessus / à gauche de celui-ci et ajoute un bit aléatoire. Vous pouvez jouer avec la variabilité en changeant la
p
variable, mais je pense que ce que j'utilise est un bon équilibre (principalement parce que j'aime le bleu, donc plus de volatilité du flou donne de bons résultats).Il y a un léger biais négatif de la division entière lors de la moyenne. Je pense que cela fonctionne, cependant, et donne un bel effet d'assombrissement au coin inférieur.
Bien sûr, pour obtenir plus d'un résultat, vous devez ajouter une
srand()
ligne à votre fonction principale.la source
Ondes réfléchies
Un motif de base d'échiquier déformé en fonction de la position d'une vague se dilatant à partir d'un point semblable à une pierre tombée dans un étang (très loin de la précision physique!). La variable
w
est le nombre de pixels à partir de ce point que la vague a déplacé. Si ellew
est suffisamment grande, l’onde reflète les côtés de l’image.w
= 225w
= 360w
= 5390Voici un GIF montrant une succession d’images au fur et à mesure que la vague s’étend. J'ai fourni un certain nombre de tailles différentes, chacune montrant autant d'images que la limite de taille de fichier de 500 Ko le permet.
Si je peux trouver un moyen de l'adapter, j'aimerais idéalement que les interférences de vagues soient modélisées de manière à ce que les ondes aient l'air plus réalistes lorsqu'elles se croisent. Je suis content de la réflexion cependant.
Notez que je n'ai pas vraiment modélisé la réflexion d'onde dans 3 lots de 140 octets. Il n'y a pas vraiment de réflexion en cours, il lui arrive juste de ressembler à ça. J'ai caché l'explication au cas où quelqu'un voudrait deviner en premier:
la source