Obligement - L'Amiga au maximum

Mercredi 15 mai 2024 - 00:00  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : C - Préprocesseur générant des objets filaires pour Anim
(Article écrit par Pascal Amiable et extrait d'Amiga News Tech - novembre 1990)


Chers lecteurs et lectrices, bonjour. Ce mois-ci, je vous propose de réaliser un préprocesseur d'objets pour le programme d'animation en filaire "Anim" que nous avons étudié ensemble il y a deux mois. Ce préprocesseur va nous décharger de la fastidieuse opération de création d'objets puisqu'il va générer les fichiers de points et de lignes à partir de quelques données de base. Pour étayer mon propos, je vous propose un exemple de programme qui va générer un tore.

Avant d'étudier cet exemple de préprocesseur, je vais effectuer un bref rappel sur la structure des fichiers de points et de lignes qui composent notre objet. Le fichier de points (point.dat) contient la liste des coordonnées X,Y,Z de chaque point 3D de l'objet. Sa structure est la suivante :
  • 1re ligne <N> (nombre de points)
  • 2e ligne <X1> <Y1> <Z1> (coordonnées du 1er point)
  • 3e ligne <X2> <Y2> <Z2> (coordonnées du 2e point)
  • ...
  • N+1re ligne <Xn> <Yn> <Zn> (coordonnées du Ne point)
Le fichier de lignes (ligne.dat) contient, quant à lui, les numéros des points origines et extrémités de chaque segment composant l'objet. Sa structure est la suivante :
  • 1re ligne <M> (nombre de lignes)
  • 2e ligne <Origine1> <Extrémité1> (1er segment)
  • 3e ligne <Origine2> <Extrémité2> (2e segment)
  • ...
  • M+1re ligne <OrigineM> <ExtrémitéM> (Me segment)
Ce petit rappel effectué, nous allons passer aux choses sérieuses. L'idée de départ consiste à générer un objet complexe à partir d'un nombre restreint de données à l'origine. L'exemple que nous allons étudier est celui d'un tore. Un tore est défini mathématiquement par trois nombres, R1 représente le petit rayon du tore, R2 représente le grand rayon (ou rayon central) du tore et n le nombre de points également répartis sur le cercle central et sur le petit cercle.

C
Figure 1

La première étape de la programmation va consister à générer le fichier de points. Il nous faut calculer pour commencer le nombre de points de l'objet. C'est très simple puisque n représente à la fois le nombre de points répartis sur le petit cercle et le grand cercle. Le nombre de points total de l'objet est dont n*n.

Nous allons maintenant calculer les coordonneés X, Y, Z de chaque point de l'objet. Le grand cercle du tore a pour équation paramétrique :

X2 = R2*cos(alpha)
Y2 = R2*sin(alpha)
Z2 = 0

Ces coordonnées X2,Y2,Z2 représentent également les coordonnées des centres des petits cercles de notre tore. Dans le cas où alpha vaut zéro les équations d'un point appartenant au petit cercle sont :

x = R1*cos(beta)+R2
y = 0
z = R1*sin(beta)

Lorsque alpha varie décrivant notre tore, on calcule facilement les coordonnées d'un point quelconque de ce tore en multipliant les coordonnées (x,y,z) ramenées en alpha = 0 par une matrice de rotation d'axe z et d'angle alpha. Ce qui nous donne les équations suivantes pour les coordonnées d'un point (X',Y',Z') d'un point du tore :

X' = x*cos(alpha)
Y' = x*sin(alpha)
Z' = z

Nous avons là tous les éléments nécessaires à la génération du fichier de points. Ce problème étant réglé, nous allons nous pencher sur la manière dont nous allons relier ces points par des segments et ainsi créer notre objet. Il s'agit de la création du fichier "ligne.dat".

Pour chaque segment de notre tore, il faut déterminer les numéros des points origines et extrémités le caractérisant. Le maillage du tore s'effectue en deux étapes. Chaque petit cercle du tore est défini par n points, ces points sont connectés entre eux par n segments représentés par des couples de points. Par exemple, pour le premier petit cercle ces couples sont (j,j+1), j variant de 0 à n-2, le couple (n-1,0) clôturant le cercle. Pour un cercle quelconque i, les couples sont (i*n+j,i*n+j+1), j variant toujours de 0 à n-2. Le segment de clôture est dans ce cas (i*n+n-1,i*n). L'algorithme de création des segments associés aux petits cercles se détermine à partir des constatations ci-dessus.

C

Nous avons donc tous les segments associés aux petits cercles, il s'agit donc d'en faire de même pour les segments liés aux grands cercles. Pour le premier grand cercle un segment est défini par un couple (i*n,i*n+n), i variant de 0 à n-2. Le segment de clôture du cercle associé est (n*(n-1),0). Pour un grand cercle quelconque, ce couple devient (i*n+j,i*n+j+n) avec en clôture (n*(n-1)+j,j). L'algorithme de calcul de ces différents couples est donc :

C

Dernier point à déterminer : le nombre de segments liés à un objet. Nous avons n*n segments liés aux petits cercles et autant pour le grand cercle. Le nombre de segments total est donc 2*n*n.

A partir de toutes ces explications, il est très facile de réaliser un petit programme en C qui génère ce tore. Les fichiers tpoint.dat et tigne.dat pouvant être ensuite relus par le programme Anim afin d'être visualisés à l'écran. Une petite remarque toutefois ; n'oubliez pas de redimensionner les tableaux de points et de lignes du programme Anim en fonction des objets que vous allez manipuler.

C
C


[Retour en haut] / [Retour aux articles]