Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1489 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  tracer une droite en mode video 13h

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

tracer une droite en mode video 13h

n°1285187
ingainga
aider pour etre aidé
Posté le 17-01-2006 à 00:21:00  profilanswer
 

s'il vous plait ,y a quelqu'un qui peut m'aider en me donnant un programme en asm,qui trace un segment d'une droite en mode video 13h,quelle que soit la pente de cette droite,
pleeeeeeeeeeaaaaaaaase,c'est urgent, et j'ai vraiment besoin d'une reponse

mood
Publicité
Posté le 17-01-2006 à 00:21:00  profilanswer
 

n°1285191
Mackila
Posté le 17-01-2006 à 01:03:29  profilanswer
 

C'est urgent de tracer des droites en assembleur à une heure du matin ?  [:pingouino]

n°1285268
theshockwa​ve
I work at a firm named Koslow
Posté le 17-01-2006 à 10:05:42  profilanswer
 

penche toi sur l'algo de tracé de droites de bresenham ... il est simple à comprendre et très performant tu devrais trouver tout ca facilement sur google

n°1285315
bjone
Insert booze to continue
Posté le 17-01-2006 à 11:21:18  profilanswer
 

sinon sans bresenham, tu fais de la virgule fixe 16:16, et tu itères bêtement sur l'axe où la droite a la plus de delta.
 
deltaX=X1-X0
deltaY=Y1-Y0
 
si deltaX>deltaY
    gradient=deltaY/deltaX
    Y=Y0
    pour X de X0 à X1
        trace (X,Y)
        Y+=gradient
    fin pour
sinon
   gradient=deltaX/deltaY
   X=X0
   pour Y de Y0 à Y1
        trace(X,Y)
        X+=gradient
   fin pour
fin si
 
tu codes ça d'abord en C en virgule flottante (avec des float pour gradient et X & Y qui sont interpolés), tu vérifies que ça marche comme ça devrait (en faisant tourner les extrémitées de la ligne autour du centre de l'écran), et ensuite tu commençes le codage en asm, et si tu veux que je t'expliques comment faire de la virgule fixe 16:16, je te filerai  de l'aide.

n°1285328
theshockwa​ve
I work at a firm named Koslow
Posté le 17-01-2006 à 11:38:07  profilanswer
 

bjone a écrit :

sinon sans bresenham, tu fais de la virgule fixe 16:16, et tu itères bêtement sur l'axe où la droite a la plus de delta.
 
...
 
tu codes ça d'abord en C en virgule flottante (avec des float pour gradient et X & Y qui sont interpolés), tu vérifies que ça marche comme ça devrait (en faisant tourner les extrémitées de la ligne autour du centre de l'écran), et ensuite tu commençes le codage en asm, et si tu veux que je t'expliques comment faire de la virgule fixe 16:16, je te filerai  de l'aide.


 
Sérieusement, ce sera plus compliqué que de faire directement l'algo de bresenham tant celui-ci est simple, hein [:dawa]

n°1285342
bjone
Insert booze to continue
Posté le 17-01-2006 à 11:48:24  profilanswer
 

simple pas spécialement, l'interpolation linéaire est le plus intuitif c'est le premier truc que l'on apprends à l'école.
de plus c'est certainement le plus rapide des 2, le nombre d'instruction par pixel est plus réduit, et un seul branchement...
 
et pour paramétrer d'autres grandeur sur ta ligne (couleur) bresenham me semble moins indiqué (en fait j'ai jamais essayé :D).
 
ceci dit, le mieux est de faire les deux. (bresenham & interpolation linéaire en virgule fixe).
 
c'est assez marrant quand j'étais en bts, le prof ne pensait pas que c'était possible de traçer une ligne sans bresenham "mais si monsieur, vous prenez un cpu 32bits, vous faites de la virgule fixe" - "ça se saurait" :D
bref travailler sur des cpus 16bits ça laisse des traçes :D

n°1285346
chrisbk
-
Posté le 17-01-2006 à 11:50:44  profilanswer
 

les lignes epaisse de plus (ou de moins )d'un pixel , c'est la merde a tracer correctement [:el g] a l'epoque je les extrudais et les passait au poly filler, pas super rapide mais le rendu tabaissait. D'ailleurs jcrois meme que j'avais degagé bresenham & consort au bénéfice de cette methode (gupta sproul ou jsaipu quoi :d)


Message édité par chrisbk le 17-01-2006 à 11:52:52
n°1285353
theshockwa​ve
I work at a firm named Koslow
Posté le 17-01-2006 à 11:54:28  profilanswer
 

bjone a écrit :

bref travailler sur des cpus 16bits ça laisse des traçes :D


 
.... Carrément [:ddr555]

n°1285443
ingainga
aider pour etre aidé
Posté le 17-01-2006 à 13:25:01  profilanswer
 

je vais essayer de faire le programme en c,et puis je ferai la conversion en asm,car j'ai essayé de plusieurs manières de le faire en asm,mais ça pas marché

n°1285464
ingainga
aider pour etre aidé
Posté le 17-01-2006 à 13:51:41  profilanswer
 

quelle est la fonction arrondir en asm,qui sert à remplacer un réél par l'entier le plus proche de lui,qqun peut me la donner en asm?

mood
Publicité
Posté le 17-01-2006 à 13:51:41  profilanswer
 

n°1285467
chrisbk
-
Posté le 17-01-2006 à 13:53:20  profilanswer
 

fistp

n°1285471
chrisbk
-
Posté le 17-01-2006 à 13:56:26  profilanswer
 

enfin je sais pas quel genre d'arrondi ca fait, cela dit, je crois que ca tronque

n°1285474
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 17-01-2006 à 13:58:14  profilanswer
 

ingainga a écrit :

quelle est la fonction arrondir en asm,qui sert à remplacer un réél par l'entier le plus proche de lui,qqun peut me la donner en asm?


y'a pas de fonction en asm, que des mnémoniques :o


---------------
J'ai un string dans l'array (Paris Hilton)
n°1285475
chrisbk
-
Posté le 17-01-2006 à 13:58:53  profilanswer
 

ta mere [:le kneu]

n°1285478
bjone
Insert booze to continue
Posté le 17-01-2006 à 14:00:34  profilanswer
 

heuuu si tu fais de l'asm tu utilises pas de la virgule flottante pour une boucle de traçage de ligne [:le kneu]

n°1285481
red factio​n
Posté le 17-01-2006 à 14:02:20  profilanswer
 
n°1285488
ingainga
aider pour etre aidé
Posté le 17-01-2006 à 14:06:53  profilanswer
 

bien sur que j'utilise pas des flottants pour tracer,c'est pour cela que j'ai besoin de la procedure arrondir,car les extrémités sont des flottants,voilà

n°1285489
chrisbk
-
Posté le 17-01-2006 à 14:08:29  profilanswer
 

bin :  
 
fld monFlottant
fistp monEntier

n°1285491
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 17-01-2006 à 14:09:47  profilanswer
 

bordel, mais code en virgule fixe [:pingouino]
http://forum.hardware.fr/hardwaref [...] tm#t537664


---------------
J'ai un string dans l'array (Paris Hilton)
n°1285494
bjone
Insert booze to continue
Posté le 17-01-2006 à 14:12:20  profilanswer
 


 
oui ma pas tout de suite, je veux qu'il code monde pseudo-code, qu'il en trouves les restrictions et qu'il comprenne pourquoi...
le tout en C en float, après on verra pour l'opti en virgue fixe...
 
et aussi il faut qu'il code la version bresenham si il veux pouvoir avoir vu de multiples compromis....

n°1285502
theshockwa​ve
I work at a firm named Koslow
Posté le 17-01-2006 à 14:18:42  profilanswer
 


t'as suivi des cours à l'IUP de Besançon ? [:petrus75]

n°1285505
chrisbk
-
Posté le 17-01-2006 à 14:19:12  profilanswer
 

le comic sans MS, veritable marque de fabrique [:el g]

n°1285539
red factio​n
Posté le 17-01-2006 à 14:42:08  profilanswer
 

En parlant de tout ces algos, est ce que quelq'un connait le nom d'une librairie permettant de rendre directement les primitives de base (ligne ,cercle, ellispse, ...) dans un buffer  
 
j'ai besoin de qqch davance qd mm car jai besoin de degrades, transparence,... etc  
 
pour linstant je fait ca en opengl mais c loin d'etre tres precis (le rendu change dune carte a lautre) sans parler de l'antialising qui foire a chaque fois.
 
lideal serait de trouver une version software d'opengl32.dll mais jai pa encore qq chose du genre :/
 

n°1285540
chrisbk
-
Posté le 17-01-2006 à 14:45:07  profilanswer
 

gdi ? [:el g]

n°1285542
red factio​n
Posté le 17-01-2006 à 14:47:21  profilanswer
 

le gdi c
 
-Lent (bon ici on s'en fou un peu sachant que pas pour du temps reel )
-Imprecis (Textout ne donne pas les meme resultats suivant les parametres utilisateurs)
-Compliqué pour faire pas grand chose(api microsoft powa)


Message édité par red faction le 17-01-2006 à 14:49:15
n°1285544
chrisbk
-
Posté le 17-01-2006 à 14:49:11  profilanswer
 

gdi+ ? [:el g]

n°1285573
bjone
Insert booze to continue
Posté le 17-01-2006 à 15:09:57  profilanswer
 

red faction a écrit :


lideal serait de trouver une version software d'opengl32.dll mais jai pa encore qq chose du genre :/


 
tu prends un PC, t'achète une S3 virge sans opengl, et tu seras sur le driver opengl software de microsoft.

n°1285901
ingainga
aider pour etre aidé
Posté le 17-01-2006 à 19:30:27  profilanswer
 

aidez -moiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
le programme de traçage d'un segment d'une droite

n°1285902
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 17-01-2006 à 19:30:57  profilanswer
 

oui ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1285909
chrisbk
-
Posté le 17-01-2006 à 19:41:53  profilanswer
 

siphon

n°1285934
ingainga
aider pour etre aidé
Posté le 17-01-2006 à 20:13:25  profilanswer
 

je veux un programme qui trace une droite en mode video,s'il vous plait

n°1285940
theshockwa​ve
I work at a firm named Koslow
Posté le 17-01-2006 à 20:20:19  profilanswer
 

ingainga a écrit :

je veux un programme qui trace une droite en mode video,s'il vous plait


 
c'est dommage, on ne te le fera pas ici  [:jagstang]  
 
cependant, si tu tentes de te mettre à la tâche en suivant les indications qu'on t'a données plus haut et que tu rencontres des problèmes, alors nous nous ferons tous un plaisir de t'aider à les surmonter

n°1285958
ingainga
aider pour etre aidé
Posté le 17-01-2006 à 20:42:08  profilanswer
 

en fait,j'ai essayé de le faire,mais j'ai eu des erreurs dans le programme,par exemple:illegal use of registr,ou bien :improper operand type,
alors.

n°1285961
chrisbk
-
Posté le 17-01-2006 à 20:48:48  profilanswer
 

alors poste ton code qu'on regarde

n°1285967
ingainga
aider pour etre aidé
Posté le 17-01-2006 à 20:57:39  profilanswer
 

Code :
  1. pile segment stack
  2.     dw 100h dup (?)
  3. pile ends
  4.  
  5. data segment
  6.     x1 dw ?
  7.     x2 dw ?
  8.     y1 dw ?
  9.     y2 dw ?
  10.     sx dd ?
  11.     sy dd ?
  12.     msg1 db 'donner la valeur de x1:',10,13
  13.     msg2 db 'donner la valeur de x2:',10,13
  14.     msg3 db 'donner la valeur de y1:',10,13
  15.     msg4 db 'donner la valeur de y2:',10,13
  16.     x dw ?
  17.     y dw ?
  18.     m dw ?
  19.     c320 dw 320
  20.    
  21. data ends
  22.  
  23. code segment
  24.     assume cs:code,ds:data
  25.  
  26. allume  proc
  27.        mov ax,0a000h
  28.        mov es,ax
  29.        mov ax,di
  30.        mul c320
  31.        add ax,si
  32.        mov cx,1
  33.        mov bx,ax
  34.        mov byte ptr es:[bx],25
  35.        ret
  36. allume endp
  37.  
  38. arrondir1 proc
  39.          finit
  40.          fld y                      ;36
  41.          fistp
  42.          ret
  43. arrondir1 endp
  44.  
  45. arrondir2 proc
  46.          fld x
  47.          fistp x
  48.          ret
  49. arrondir2 endp
  50.  
  51. deb: mov ax,data
  52.     mov ds,ax
  53.  
  54.     lea dx,x1
  55.     lea dx,x2
  56.     lea dx,y1               ;52
  57.     lea dx,y2
  58.     int 21h
  59.  
  60.     finit
  61.     fld y2
  62.     fsub y1
  63.     fstp sy
  64.     fld x2    ;60          
  65.     fsub x1
  66.     fstp sx
  67.     fdiv sy,sx
  68.     fstp m
  69.  
  70.     fcmp m,1
  71.     jnz etq1
  72.     jmp etq2
  73.  
  74.      mov si,x1     ;70  
  75.      mov di,y1
  76. etq1: inc si
  77.      fadd di,m
  78.      call arrondir1
  79.      mov di,y
  80.      call allume
  81.      loop etq1
  82.      cmp si,x2
  83.      jle etq1
  84.  
  85. etq2: inc di
  86.      fadd si,1
  87.      fdiv si,m
  88.      fstp si
  89.      call arrondir2
  90.      mov si,x
  91.      call allume
  92.      loop etq2
  93.      fcomp y2    ;89
  94.      jle etq2
  95.  
  96.      cmp m,-1
  97.      jle etq2
  98.      jmp etq1
  99.  
  100.      mov ah,4ch
  101.      int 21h
  102. code ends
  103.     end deb


peut etre tu trouves ceci bête,mais je suis encore debutante en assembleur


Message édité par Harkonnen le 18-01-2006 à 20:36:24
n°1285986
ingainga
aider pour etre aidé
Posté le 17-01-2006 à 21:14:01  profilanswer
 

j'attend vos reponses

n°1286051
Arjuna
Aircraft Ident.: F-MBSD
Posté le 17-01-2006 à 21:52:15  profilanswer
 

Après faut réfléchir si tu veux de l'anti-alias ou non, ça change tout le code
 
:ange:
 
Nan, j'dit ça parceque j'ai un pote qui s'était amusé à faire ça pendant qu'on galérait à afficher des lignes verticales et horizontales quand j'étais étudiant :D

n°1286055
chrisbk
-
Posté le 17-01-2006 à 21:53:29  profilanswer
 

galerer a afficher des lignes verticales et horizontales ? vous codiez bourré ?

n°1286057
chrisbk
-
Posté le 17-01-2006 à 21:54:24  profilanswer
 

t'as un fistp qui a pas d'op de destination ?
 
pis c'est quoi cet asm d'avant guerre ? [:totoz]

n°1286067
maddraft
Posté le 17-01-2006 à 21:57:25  profilanswer
 

Désolé je ne te serai d'aucune en asm
je compati et ne m'en veut pas mais je me ouvient que du prof et de son addition
Respect
---  
Tu pourrais quand même voire qu'elles sont les parties code qui t'envoient ad padres ça te permettrai d'avancer  
--
C'est currieux la façon dont est organisé ton code : tu dis code segment ... puis deb...  
et tu fermes en code ends puis en deb.
 
Bon courrage

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  tracer une droite en mode video 13h

 

Sujets relatifs
[turbo pascal] readkey et mode graphiqueanti hotlink d'une video incrustée ds page web
Transmission de flux video en C#Transformer une vidéo .avi en une vidéo .ra
Extraction de frames dans une vidéoprobleme flash mx video
probleme video flash mxintegrer video dans page html
Piloter le lecteur de disquette en mode protégéTracer des graphs en temps réel
Plus de sujets relatifs à : tracer une droite en mode video 13h


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR