Animations [scanline + algèbre]

Soyez le premier à donner votre avis sur cette source.

Vue 5 380 fois - Téléchargée 1 001 fois

Description

Bonjour,
alors voici, à l'approche des vacances de février, un petit programme pour effectuer une animation tout à fait basique, tout

simplement avec Scanline, et un petit peu d'algèbre (équations de droites, trigonométrie ...).
C'est tout bête : tout commence avec une boîte de dialogue débile - choisissez votre mode de qualité (Basse qualité sera plus rapide,

mais beaucoup de scintillements). Ensuite, choisissez votre résolution (commencez avec le plus petit, puis augmentez progressivement

- par exemple, pour moi, ça marche au top sur 128x128, moyen sur 256x256, et ça rame sur 512x512).
Ensuite, vous pourrez voir une belle animation (comme celles qu'on peut eventuellement voir dans les jukebox électroniques - comme dans Windows Media Player, avec la prévisualisation). Les couleurs changement progressivement, parcourent l'arc-en-ciel. Un effet de flou est constamment appliqué pour faire disparaître les animations et laisser la place à d'autres.

Voici la liste des animations :

- Cercle : bon ben un beau cercle qui fait toute l'image.
- Arc : un arc qui tourne progressivement autour de l'image - plus petit que le cercle, volontairement.
- Ligne tournante : une ligne qui effectue une rotation sur le centre de l'image.
- Ligne tournante bizarre : la même ligne, mais avec une accelération radiale (c'est-à-dire qu'elle bouge avec les angles en radians).

Pour l'instant il n'y a que ça, mais ça en jette déjà pas mal.

Comme je travaille avec Scanline, il m'est impossible d'utiliser Canvas.Ellipse pour dessiner les cercles, et LineTo pour les lignes.

J'ai donc dû me débrouiller avec mon tableau de pixels ...
Bon ben c'est simple : pour le cercle, on utilise les sinus et les cosinus, et pour la ligne, on utilise l'équation d'une droite !

Les tables de sinus et de cosinus sont déclarées en tant que constantes. Vous pouvez vous amuser à changer quelques valeurs dans le tableau (tout en conservant une copie, attention), ça fait marrant pour le cercle !

Le tout géré par un thread, avec affichage des FPS et possibilité de mettre en pause, et le dessin géré par un petit timer.

Voilà, j'espère que vous apprécierez :)

On peut obtenir des configurations très interessantes avec un peu de chance.

Ajout de l'unité DialogsEx de Cirec pour pouvoir faire une boîte décente pour la résolution et la haute qualité :)

Source / Exemple :


// In the Zip

Conclusion :


Tous commentaires, critiques, remarques, conseils, etc ... ici :)

Codé sous Delphi 6 Personal Edition !

Cordialement, Bacterius !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
14
Je te conseille de regarder du côté de GLScene...
Messages postés
3818
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
18 septembre 2020
34
@Nicolas___ : MDR

dans ce cas la gain est minime(si gain il y a) par contre la probabilité d'une erreur de saisie est importante.
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Attends : je ressors mon unité de projection 3D => 2D. Je ne l'ai jamais finie, je n'ai pas pu gérer les angles de la caméra.

*Bouhouhouhouh*

Probablement un cube en 3D home-made avec des faces dégradées la prochaine fois ?

Cordialement, Bacterius !
Messages postés
234
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
21 novembre 2013

Oui et non...

Si tu veux réutiliser ton code, passes par des ScanLines...Tu pourras ajouter des effets plus tard...et pourquoi pas la 3D ?
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Je viens de me poser une question qui m'a brisé : ça ne serait pas plus rapide en utilisant Ellipse et LineTo des canevas ?

x(

Cordialement, Bacterius !
Afficher les 71 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.