2010-04-15 25 views
1

Je suis en train d'écrire un programme pour générer des visuels originaux. Jusqu'à présent, je peux peindre chaque pixel avec une valeur bleue aléatoire:Synthèse vidéo - Créer des vagues, des motifs, des dégradés

for (y = 0; y < YMAX; y++) { 
    for (x = 0; x < XMAX; x++) { 
     b = rand() % 255; 
     setPixelColor(x,y,r,g,b); 
    } 
} 

Je voudrais faire plus que simplement faire du bruit bleu, mais je ne suis pas sûr où commencer (Google ne me aide beaucoup aujourd'hui), donc ce serait bien si vous pouviez partager tout ce que vous savez sur le sujet ou des liens vers des ressources connexes.

Répondre

0

J'avais l'habitude de faire ce genre de trucs dans le passé. Malheureusement, je n'ai pas le code: -/

Vous serez étonné de quels effets les opérateurs arithmétiques et entier au niveau du bit peut produire:

FRAME_ITERATION++; 
for (y = 0; y < YMAX; y++) { 
    for (x = 0; x < XMAX; x++) { 
     b = (x | y) % FRAME_ITERATION; 
     setPixelColor(x,y,r,g,b); 
    } 
} 

Désolé, mais je ne me souviens pas exactement combinaisons, donc b = (x | y) % FRAME_ITERATION;
pourrait effectivement rendre rien de beau. Mais, vous pouvez essayer vos propres combos. Quoi qu'il en soit, avec le code comme ci-dessus, vous pouvez produire des motifs étranges et même des effets semblables à l'eau.

+0

Bitwise donne des résultats intéressants, et merci pour la partie FRAME_ITERATION, c'est le bit crucial que manquait mon code. – Nathan

0

Les vagues sont généralement effectuées avec des fonctions trig (sin/cos) ou des tables qui les approximent.

Vous pouvez également faire des ondulations d'eau fraîche avec des calculs simples. Voir here pour le code et une démo en ligne.

+0

Merci, j'ai complètement oublié les fonctions trig. – Nathan