π
<-

Algorithme de Bresenham

Algorithme de Bresenham

Unread postby grosged » 11 Apr 2016, 20:27

Je sais ce que vous allez me dire : pourquoi se casser la tête à tracer un segment point-par-point alors que le Basic est pourvu de l'instruction Line( :help:
Hé bien c'est dans l'intention de simplifier/tester l'algorithme en vue d'une adaptation en assembleur :p
C'est surtout dans la boucle que la simplification est recherchée.
Pour l'instant , je me borne à un seul cas de figure : le tracé part du point (A,B) vers (C,D) avec A<C et B≥D

1ère version:
Code: Select all
:ClrDraw
:0→A:0→B:90→C:17→D        ; initialise les coordonnées
:C-A→M       ; c'est Δx
:D-B→N        ; c'est Δy
:0→E
:B→Y
:For(X,A,C
:Pxl-on(Y,X
:If 2E<M-2N:Goto 0
:Y+1→Y
:E-2M→E
:Lbl 0:E+2N→E
:End


2ème version:
Code: Select all
:ClrDraw
:0→A:0→B:90→C:17→D
:2(C-A→M
:2(D-B→N
:C-A-N→H
:0→E
:B→Y
:For(X,A,C
:Pxl-on(Y,X
:If E-H<0:Goto 0
:Y+1→Y
:E-M→E
:Lbl 0:E+N→E
:End
C'est déjà plus léger :)

3ème version:
...Quelqu'un a une idée ? :#roll#:

(Pour plus d'infos : http://home.mis.u-picardie.fr/~choplin/ ... enham.html )
Last edited by grosged on 11 Apr 2016, 21:25, edited 4 times in total.
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Algorithme de Bresenham

Unread postby Ti64CLi++ » 11 Apr 2016, 20:31

Tu devrais faire en ASM ;)
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Algorithme de Bresenham

Unread postby Adriweb » 11 Apr 2016, 22:46

Ce que j'avais utilisé en C :

(dans la branche des y différents)
Code: Select all
int dx = abs(x1-x0), sx = x0<x1 ? 1 : -1;
int dy = abs(y1-y0), sy = y0<y1 ? 1 : -1;
int err = (dx>dy ? dx : -dy)/2, e2;
for(;;) {
    gc_drawPixel(x0, y0);
    if (x0 == x1 && y0 == y1)
        break;
    e2 = err;
    if (e2 >-dx) { err -= dy; x0 += sx; }
    if (e2 < dy) { err += dx; y0 += sy; }
}

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.9%
 
Posts: 14839
Images: 1131
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Algorithme de Bresenham

Unread postby grosged » 12 Apr 2016, 15:27

Merci pour le partage, Adriweb ;)
Personnellement, j'avoue que j'ai du mal à déchiffrer (j'y connais que dalle en C)
Pour le moment, je ne planche que sur le cas de figure x1<x2 et y1<y2 et (x2-x1)>(y2-y1)
je suis à la phase d'écriture en assembleur...
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Algorithme de Bresenham

Unread postby grosged » 12 Apr 2016, 21:34

neuronix wrote:Tu devrais faire en ASM ;)


ça y est, je m'y colle :)
[eZ80] Algorithme de Bresenham : optimisation
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile


Return to TI-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 26 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1827 utilisateurs:
>1792 invités
>28 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)