Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
Algorithme de Bresenham
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Bonjour,
A vous lire je dois être maso, mais heureux de programmer en assembleur
Les macros, je limite au minimum
L’intérêt pour moi c’est de comprendre et de pouvoir faire du pas à pas dans mes programmes
Et il me semble que la rubrique ou je poste est l’assembleur
Bonne journée
A+
Francois
Ps : a Temps-x pour son partage
A vous lire je dois être maso, mais heureux de programmer en assembleur
Les macros, je limite au minimum
L’intérêt pour moi c’est de comprendre et de pouvoir faire du pas à pas dans mes programmes
Et il me semble que la rubrique ou je poste est l’assembleur
Bonne journée
A+
Francois
Ps : a Temps-x pour son partage
Algorithme de Bresenham
Bonjour,
C'était de l'humour, et je parlais du cas ou l'on connaît plusieurs langages. En plus les microcontrôleurs sont un cas particulier car un programme C ne sera pas vraiment portable d'une cpu à l'autre, nos applis sont trop liées au hardware.
Temps-x le pic fait les opérations indifféremment sur des valeurs signées ou non signées. Si tu décides que le bit le plus haut représente un signe, et bien les opérations add et sub retourneront une valeur signée correcte.
Et une fois de plus si tu fais Diametre = 1 - rayon, la carry C en sortie de soustraction ne donne pas le signe de Diametre.
Si les 2 valeurs signées sont sur 16 bits, après soustraction 16 bits, le signe de Diametre est dans son bit b15.
Si rayon est signé 8 bits et Diametre signé 16 bits, après soustraction 8 bits, le signe de Diamètre est dans son bit b7, et il faut convertir le nombre 8 bits signé en nombre 16 bits signé :
0xxxxxx donne 00000000 0xxxxxx (nombre positif)
1xxxxxx donne 11111111 1xxxxxx (nombre négatif)
C'est donc plus simple de passer aussi rayon en 16 bits.
C'était de l'humour, et je parlais du cas ou l'on connaît plusieurs langages. En plus les microcontrôleurs sont un cas particulier car un programme C ne sera pas vraiment portable d'une cpu à l'autre, nos applis sont trop liées au hardware.
Temps-x le pic fait les opérations indifféremment sur des valeurs signées ou non signées. Si tu décides que le bit le plus haut représente un signe, et bien les opérations add et sub retourneront une valeur signée correcte.
Et une fois de plus si tu fais Diametre = 1 - rayon, la carry C en sortie de soustraction ne donne pas le signe de Diametre.
Si les 2 valeurs signées sont sur 16 bits, après soustraction 16 bits, le signe de Diametre est dans son bit b15.
Si rayon est signé 8 bits et Diametre signé 16 bits, après soustraction 8 bits, le signe de Diamètre est dans son bit b7, et il faut convertir le nombre 8 bits signé en nombre 16 bits signé :
0xxxxxx donne 00000000 0xxxxxx (nombre positif)
1xxxxxx donne 11111111 1xxxxxx (nombre négatif)
C'est donc plus simple de passer aussi rayon en 16 bits.
Algorithme de Bresenham
Bonsoir paulfjujo, francois77, satinas, et tout le forum,
Une macro évite de réécrire des données, et permet de rendre plus lisible un programme, c'est ce que fait les langages de haut niveau.
Par contre dans certain cas, ça occupe plus de place en mémoire programme.
Quand on utilise des pics de grande capacité, faut pas s'en priver.
En retire 1 pixel pour un coté, et comme c'est un rayon en le multiplie par 2 pour avoir la diamètre, le pixel retiré sert à ce que la mesure soit juste.
diametre = 2 * (1 - rayon)
Rayon est utilisé qu'une seule fois, après on n'a plus besoin de lui, ok je vais le faire.
Un petit extrait de ce que Maître Bigonoff dit, qui est intéressant
Maintenant, si vous avez bien suivi, vous êtes en train de vous poser la question suivante :
Quand je vois B’11111101’, est-ce que c’est –3 ou est-ce que c’est 253 ?
Et bien vous ne pouvez pas le savoir sans connaître le contexte.
Sachez que les nombres signifient uniquement ce que le concepteur du programme a décidé qu’ils représentent.
S’il travaille avec des nombres signés ou non, ou si cet octet représente tout autre chose (une t°, un caractère, etc).
La seule chose qui importe c’est de respecter les conventions que vous vous êtes fixées lors de la création de cet octet.
C’est donc à vous de décider ce dont vous avez besoin pour tel type de données.
Le C à envahi ASM
A+
francois77 a écrit :Source du message Les macros, je limite au minimum
Une macro évite de réécrire des données, et permet de rendre plus lisible un programme, c'est ce que fait les langages de haut niveau.
Par contre dans certain cas, ça occupe plus de place en mémoire programme.
Quand on utilise des pics de grande capacité, faut pas s'en priver.
francois77 a écrit :Source du message Et il me semble que la rubrique ou je poste est l’assembleur
satinas a écrit :Source du message Et une fois de plus si tu fais Diametre = 1 - rayon, la carry C en sortie de soustraction ne donne pas le signe de Diametre.
En retire 1 pixel pour un coté, et comme c'est un rayon en le multiplie par 2 pour avoir la diamètre, le pixel retiré sert à ce que la mesure soit juste.
diametre = 2 * (1 - rayon)
satinas a écrit :Source du message C'est donc plus simple de passer aussi rayon en 16 bits.
Rayon est utilisé qu'une seule fois, après on n'a plus besoin de lui, ok je vais le faire.
Un petit extrait de ce que Maître Bigonoff dit, qui est intéressant
Maintenant, si vous avez bien suivi, vous êtes en train de vous poser la question suivante :
Quand je vois B’11111101’, est-ce que c’est –3 ou est-ce que c’est 253 ?
Et bien vous ne pouvez pas le savoir sans connaître le contexte.
Sachez que les nombres signifient uniquement ce que le concepteur du programme a décidé qu’ils représentent.
S’il travaille avec des nombres signés ou non, ou si cet octet représente tout autre chose (une t°, un caractère, etc).
La seule chose qui importe c’est de respecter les conventions que vous vous êtes fixées lors de la création de cet octet.
C’est donc à vous de décider ce dont vous avez besoin pour tel type de données.
paulfjujo a écrit :Source du message On se croirait entre Ru.... et Uk.... ( ASM et C) , ou l'inverse ( C et ASM )
Le C à envahi ASM
A+
Algorithme de Bresenham
Bonjour francois77, et tout le forum,
J'ai mi une nouvelle version en post #1, avec une vidéo sur le rendu.
De plus j'explique les différentes fonctions du code Circle-3.asm, malgré cette version qui se rapproche de très près de la vérité, on peut encore améliorer la qualité du cercle, ce qui permettrais de remplir les cercle, je vais voir ce que je peux faire.
A+
J'ai mi une nouvelle version en post #1, avec une vidéo sur le rendu.
De plus j'explique les différentes fonctions du code Circle-3.asm, malgré cette version qui se rapproche de très près de la vérité, on peut encore améliorer la qualité du cercle, ce qui permettrais de remplir les cercle, je vais voir ce que je peux faire.
A+
Algorithme de Bresenham
Bonsoir tout le forum,
Et ben non, on ne peut pas améliorer la qualité du cercle, pour faire des essais j'ai utilisé un langage de haut niveau (QuickBasic) ou la fonction circle existe déjà, je n'ai pas pu remplir un cercle en accoladant les cercles l'un à coté des autres, il y a toujours un petit jour.
J'ai refait un essai avec mspaint.exe de Windows XP, j'obtiens le même résultat, voyez par vous même
il est donc impossible de remplir un cercle en accoladant les cercles l'un à coté des autres, à moins qu'un volontaire me démontre le contraire, je suis preneur.
Mais heureusement on peut le faire autrement, faut juste écrire le code ASM .....
Autre chose, en modifiant la macro on peut maintenant faire des ronds ovale, l'ovalisation et comprise entre 2 et 4. le 1 représente un rond non ovalisé.
je mettrais le code pour cette nouvelle fonction dans le cours du mois
Voici ce que sa donne
A+
Temps-x a écrit :Source du message on peut encore améliorer la qualité du cercle, ce qui permettrais de remplir les cercle, je vais voir ce que je peux faire.
Et ben non, on ne peut pas améliorer la qualité du cercle, pour faire des essais j'ai utilisé un langage de haut niveau (QuickBasic) ou la fonction circle existe déjà, je n'ai pas pu remplir un cercle en accoladant les cercles l'un à coté des autres, il y a toujours un petit jour.
J'ai refait un essai avec mspaint.exe de Windows XP, j'obtiens le même résultat, voyez par vous même
il est donc impossible de remplir un cercle en accoladant les cercles l'un à coté des autres, à moins qu'un volontaire me démontre le contraire, je suis preneur.
Mais heureusement on peut le faire autrement, faut juste écrire le code ASM .....
Autre chose, en modifiant la macro on peut maintenant faire des ronds ovale, l'ovalisation et comprise entre 2 et 4. le 1 représente un rond non ovalisé.
je mettrais le code pour cette nouvelle fonction dans le cours du mois
Voici ce que sa donne
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Algorithme de Bresenham
- Claudius
Passionné- Messages : 260
- Âge : 69
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
Bonsoir,
Effectivement, l'algorithme de Besenham a une faiblesse intrinsèque et irrémédiable qui ne lui permet pas de paver le plan avec des cercles concentriques :-((
La preuve avec 40 quarts cercles concentriques centrés en (5;3) de rayon allant de 1 à 40 et numérotés A, B, C, ...Y, Z, a, b, c, ... m et n :
Pour dessiner des "couronnes" de cercles concentriques, il faut se tourner vers l'algorithme d'Andres qui lui, permet d'accoler exactement des cercles concentriques sans "trou" et permet ainsi de paver le plan
La preuve avec les mêmes 40 quarts cercles concentriques centrés en (5;3) de rayon allant de 1 à 40 et numérotés A, B, C, ...Y, Z, a, b, c, ... m et n :
A suivre...
Temps-x à écrit:
... je n'ai pas pu remplir un cercle en accolant les cercles l'un à coté des autres, il y a toujours un petit jour.
Effectivement, l'algorithme de Besenham a une faiblesse intrinsèque et irrémédiable qui ne lui permet pas de paver le plan avec des cercles concentriques :-((
La preuve avec 40 quarts cercles concentriques centrés en (5;3) de rayon allant de 1 à 40 et numérotés A, B, C, ...Y, Z, a, b, c, ... m et n :
Code : Tout sélectionner
x 1 2 3 4
y 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 . . . . . 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 a b c d e f g h i j k l m n .
4 . . . . . 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 a b c d e f g h i j k l m n .
5 . . . . . B 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 a b c d e f g h i j k l m n .
6 . . . . . C C D D E F G H I . J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n .
7 . . . . . D D . E F . G H I J K L M N O P . Q R S T U V W X Y Z a b c d e f g h i j k l m n .
8 . . . . . E E E F . G H I . J K L M N O P Q R S T U V W X Y . Z a b c d e f g h i j k l m n .
9 . . . . . F F F G G H . I J K L . M N O P Q R S T U V W X Y Z a b c d e f g h i j . k l m n .
10 . . . . . G G G H H I I J K . L M N O P Q . R S T U V W X Y Z a b c d e f g h i j k l m n . .
11 . . . . . H H H I I . J K K L M N . O P Q R S T U V . W X Y Z a b c d e f g h i j k l m n . .
12 . . . . . I I I . J J K . L M . N O P Q . R S T U V W X Y Z a . b c d e f g h i j k l m n . .
13 . . . . . J J J J K K L L M . N O P . Q R S T U . V W X Y Z a b c d e f g h . i j k l m n . .
14 . . . . . K K K K L L . M N N O . P Q R S . T U V W X Y . Z a b c d e f g h i j k l m n . . .
15 . . . . . L L L L M M M N . O P P Q R . S T U V . W X Y Z a b c d . e f g h i j k l m n . . .
16 . . . . . M M M M N N N O O P . Q R . S T U . V W X Y . Z a b c d e f g h i . j k l m n . . .
17 . . . . . N N N N O O O P P Q Q R . S T . U V W X . Y Z a b c . d e f g h i j k l m n . . . .
18 . . . . . O O O O P P P Q Q . R S S T . U V W . X Y Z a . b c d e f g . h i j k l m n . . . .
19 . . . . . P P P P . Q Q . R R S . T U U V . W X Y Z . a b c d . e f g h i j k l . m n . . . .
20 . . . . . Q Q Q Q Q R R R S S T T U . V W W X Y . Z a b c . d e f g h . i j k l m n . . . . .
21 . . . . . R R R R R S S S T T U U V V W . X Y . Z a b . c d e f . g h i j k l . m n . . . . .
22 . . . . . S S S S S T T T U U . V . W X X Y . Z a . b c d e . f g h i . j k l m n . . . . . .
23 . . . . . T T T T T U U U V V V W W X . Y Z Z a . b c d . e f g h . i j k l m . n . . . . . .
24 . . . . . U U U U U V V V . W W X X Y Y Z . a b b c d . e f g . h i j k . l m n . . . . . . .
25 . . . . . V V V V V W W W W X X Y Y . Z a a b . c d . e f . g h i j . k l m n . . . . . . . .
26 . . . . . W W W W W X X X X Y Y . Z Z a . b c c d . e f . g h i . j k l m . n . . . . . . . .
27 . . . . . X X X X X Y Y Y Y Z Z Z a a b b c . d e e f . g h i . j k l . m n . . . . . . . . .
28 . . . . . Y Y Y Y Y . Z Z Z a a a b b c c d d e . f g g h i . j k . l m n . . . . . . . . . .
29 . . . . . Z Z Z Z Z Z a a a . b b c c . d . e f f g . h i . j k . l m n . . . . . . . . . . .
30 . . . . . a a a a a a b b b b c c d d d e e f . g h h i . j k . l m . n . . . . . . . . . . .
31 . . . . . b b b b b b c c c c d d . e e f f g g h . i j j k . l m . n . . . . . . . . . . . .
32 . . . . . c c c c c c d d d d e e e f f g g h h i i j . k l l m . n . . . . . . . . . . . . .
33 . . . . . d d d d d d e e e e f f f g g . h . i . j k k l . m n n . . . . . . . . . . . . . .
34 . . . . . e e e e e e f f f f g g g h h h i i j j k . l m m n . . . . . . . . . . . . . . . .
35 . . . . . f f f f f f g g g g h h h i i i j j k k l l m . n . . . . . . . . . . . . . . . . .
36 . . . . . g g g g g g h h h h . i i . j j k k l l m m n n . . . . . . . . . . . . . . . . . .
37 . . . . . h h h h h h i i i i i j j j k k l l . m . n . . . . . . . . . . . . . . . . . . . .
38 . . . . . i i i i i i j j j j j k k k l l . m m n n . . . . . . . . . . . . . . . . . . . . .
39 . . . . . j j j j j j . k k k k l l l m m m n n . . . . . . . . . . . . . . . . . . . . . . .
40 . . . . . k k k k k k k l l l l m m m n n n . . . . . . . . . . . . . . . . . . . . . . . . .
41 . . . . . l l l l l l l m m m m n n n . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42 . . . . . m m m m m m m n n n n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43 . . . . . n n n n n n n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pour dessiner des "couronnes" de cercles concentriques, il faut se tourner vers l'algorithme d'Andres qui lui, permet d'accoler exactement des cercles concentriques sans "trou" et permet ainsi de paver le plan
La preuve avec les mêmes 40 quarts cercles concentriques centrés en (5;3) de rayon allant de 1 à 40 et numérotés A, B, C, ...Y, Z, a, b, c, ... m et n :
Code : Tout sélectionner
x 1 2 3 4
y 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 . . . . . 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 a b c d e f g h i j k l m n .
4 . . . . . A 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 a b c d e f g h i j k l m n .
5 . . . . . B B C D D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n .
6 . . . . . C C D D E F G H I I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n .
7 . . . . . D D D E F F G H I J K L M N O P P Q R S T U V W X Y Z a b c d e f g h i j k l m n .
8 . . . . . E E E F F G H I I J K L M N O P Q R S T U V W X Y Y Z a b c d e f g h i j k l m n .
9 . . . . . F F F G G H H I J K L M M N O P Q R S T U V W X Y Z a b c d e f g h i j j k l m n .
10 . . . . . G G G H H I I J K K L M N O P Q Q R S T U V W X Y Z a b c d e f g h i j k l m n . .
11 . . . . . H H H I I I J K K L M N N O P Q R S T U V V W X Y Z a b c d e f g h i j k l m n . .
12 . . . . . I I I I J J K K L M M N O P Q Q R S T U V W X Y Z a b b c d e f g h i j k l m n . .
13 . . . . . J J J J K K L L M M N O P P Q R S T U U V W X Y Z a b c d e f g h h i j k l m n . .
14 . . . . . K K K K L L M M N N O P P Q R S S T U V W X Y Y Z a b c d e f g h i j k l m n . . .
15 . . . . . L L L L M M M N N O P P Q R R S T U V V W X Y Z a b c d d e f g h i j k l m n . . .
16 . . . . . M M M M N N N O O P P Q R R S T U U V W X Y Z Z a b c d e f g h i i j k l m n . . .
17 . . . . . N N N N O O O P P Q Q R R S T U U V W X X Y Z a b c d d e f g h i j k l m n n . . .
18 . . . . . O O O O P P P Q Q Q R S S T U U V W W X Y Z a a b c d e f g h h i j k l m n . . . .
19 . . . . . P P P P P Q Q Q R R S S T U U V W W X Y Z Z a b c d e e f g h i j k l l m n . . . .
20 . . . . . Q Q Q Q Q R R R S S T T U U V W W X Y Y Z a b c c d e f g h h i j k l m n . . . . .
21 . . . . . R R R R R S S S T T U U V V W W X Y Y Z a b b c d e f f g h i j k l l m n . . . . .
22 . . . . . S S S S S T T T U U U V V W X X Y Y Z a b b c d e e f g h i j j k l m n . . . . . .
23 . . . . . T T T T T U U U V V V W W X X Y Z Z a b b c d d e f g h h i j k l m m n . . . . . .
24 . . . . . U U U U U V V V V W W X X Y Y Z Z a b b c d d e f g g h i j k k l m n . . . . . . .
25 . . . . . V V V V V W W W W X X Y Y Z Z a a b b c d d e f g g h i j j k l m n n . . . . . . .
26 . . . . . W W W W W X X X X Y Y Y Z Z a a b c c d d e f g g h i i j k l m m n . . . . . . . .
27 . . . . . X X X X X Y Y Y Y Z Z Z a a b b c c d e e f g g h i i j k l l m n . . . . . . . . .
28 . . . . . Y Y Y Y Y Y Z Z Z a a a b b c c d d e e f g g h i i j k l l m n . . . . . . . . . .
29 . . . . . Z Z Z Z Z Z a a a b b b c c d d e e f f g g h i i j k k l m n n . . . . . . . . . .
30 . . . . . a a a a a a b b b b c c d d d e e f f g h h i i j k k l m n n . . . . . . . . . . .
31 . . . . . b b b b b b c c c c d d d e e f f g g h h i j j k l l m n n . . . . . . . . . . . .
32 . . . . . c c c c c c d d d d e e e f f g g h h i i j j k l l m n n . . . . . . . . . . . . .
33 . . . . . d d d d d d e e e e f f f g g h h h i j j k k l l m n n . . . . . . . . . . . . . .
34 . . . . . e e e e e e f f f f g g g h h h i i j j k k l m m n n . . . . . . . . . . . . . . .
35 . . . . . f f f f f f g g g g h h h i i i j j k k l l m m n . . . . . . . . . . . . . . . . .
36 . . . . . g g g g g g h h h h h i i i j j k k l l m m n n . . . . . . . . . . . . . . . . . .
37 . . . . . h h h h h h i i i i i j j j k k l l l m m n n . . . . . . . . . . . . . . . . . . .
38 . . . . . i i i i i i j j j j j k k k l l l m m n n . . . . . . . . . . . . . . . . . . . . .
39 . . . . . j j j j j j j k k k k l l l m m m n n . . . . . . . . . . . . . . . . . . . . . . .
40 . . . . . k k k k k k k l l l l m m m n n n . . . . . . . . . . . . . . . . . . . . . . . . .
41 . . . . . l l l l l l l m m m m n n n n . . . . . . . . . . . . . . . . . . . . . . . . . . .
42 . . . . . m m m m m m m n n n n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43 . . . . . n n n n n n n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A suivre...
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
Algorithme de Bresenham
Bonsoir Claudius, et tout le forum,
pour cette info et cette démonstration
Je vais tester en (QuickBasic) pour voir le résultat, ça m'a l'air plus simple que l'algorithme de Bresenham pour écrire ça en ASM.
Je viens de faire un essai avec l'algorithme d'Andres en mode d'écran 320 x 200 j'ai encore des jours en accoladant les cercles.
Je vais voir d’où ça peut venir, le mode d'écran y est peut être pour quelque chose.
A+
Claudius a écrit :Source du message Effectivement, l'algorithme de Besenham a une faiblesse intrinsèque et irrémédiable qui ne lui permet pas de paver le plan avec des cercles concentriques
pour cette info et cette démonstration
Claudius a écrit :Source du message Pour dessiner des "couronnes" de cercles concentriques, il faut se tourner vers l'algorithme d'Andres qui lui, permet d'accoler exactement des cercles concentriques sans "trou" et permet ainsi de paver le plan
Je vais tester en (QuickBasic) pour voir le résultat, ça m'a l'air plus simple que l'algorithme de Bresenham pour écrire ça en ASM.
Je viens de faire un essai avec l'algorithme d'Andres en mode d'écran 320 x 200 j'ai encore des jours en accoladant les cercles.
Je vais voir d’où ça peut venir, le mode d'écran y est peut être pour quelque chose.
A+
Algorithme de Bresenham
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Bonjour à tous
Ma conclusion pour des petits cercles ou des ronds sur un petit écran comme SDD1306
Pour faire des cercles = l'algorithme de Besenham
Pour faire des ronds = l'algorithme d'Andres
En copie j’ai regardé la tête des cercles de l’ algorithme d'Andres et c’est plutôt bof !
Merci à Claudius pour la démonstration et merci à Temps-x pour sa programmation
Perso j’utilise ma version bourrin ( excel > asm) pour faire mes 20 rond + cercles
A+
Francois
Ma conclusion pour des petits cercles ou des ronds sur un petit écran comme SDD1306
Pour faire des cercles = l'algorithme de Besenham
Pour faire des ronds = l'algorithme d'Andres
En copie j’ai regardé la tête des cercles de l’ algorithme d'Andres et c’est plutôt bof !
Merci à Claudius pour la démonstration et merci à Temps-x pour sa programmation
Perso j’utilise ma version bourrin ( excel > asm) pour faire mes 20 rond + cercles
A+
Francois
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Algorithme de Bresenham
Bonsoir tout le forum,
J'ai testé l'algorithme d'Andres en version ASM, et j'ai était étonné du résultat obtenu, voyez par vous mêmes.
Je le trouve supérieur à l'algorithme de Besenham, la qualité et meilleur, et en plus on peu faire un diamètre bien plus important en 8 bits jusqu'à un rayon de 128 pixels
Je vous ferais parvenir la source quand je pourrais.
A+
J'ai testé l'algorithme d'Andres en version ASM, et j'ai était étonné du résultat obtenu, voyez par vous mêmes.
Je le trouve supérieur à l'algorithme de Besenham, la qualité et meilleur, et en plus on peu faire un diamètre bien plus important en 8 bits jusqu'à un rayon de 128 pixels
Je vous ferais parvenir la source quand je pourrais.
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 104 invités