Vistas de página en total

domingo, 30 de marzo de 2014

EJEMPLO TRAZADO DE CIRCULOS

  Este programa es un ejemplo de ejecución de la librería gráfica de circulos.
   Lo más complejo de esta rutina es calcular el radio de la circunferencia a partir de dos puntos seleccionados en pantallas.
   Para ello, utilizo el teorema de pitágoras, y apoyándome en las funciones matemáticas puestas anteriormente calculo el radio.   Esto lo programé ya en la función puesta anterirometne dist_pixel.

   En este caso para que quede3 más elegante, el programa incrementa el color por cada circulo.

                       

     Se puede bajar el ejemplo compilado en el enlace





EJ_CIRCL.ASM

; Copyright (C) 2013  José Ángel Moneo Fernández

;    This program is free software: you can redistribute it and/or modify
;    it under the terms of the GNU General Public License as published by
;    the Free Software Foundation, either version 3 of the License, or
;   (at your option) any later version.

;    This program is distributed in the hope that it will be useful,
;    but WITHOUT ANY WARRANTY; without even the implied warranty of
;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;    GNU General Public License for more details.

;    You should have received a copy of the GNU General Public License
;    along with this program.  If not, see <http://www.gnu.org/licenses/>.

include main.mac
include stdio.mac
include mouse.mac
include graphics.mac
include math.mac

.model compact,pascal
.stack 200

.data
x0 dw 100
y0 dw 100
x1 dw 90
y1 dw 90
radio dw 0,0

color dw 1

.code

principal proc far
        main
        modovideo 12h   ;inicia graficos
        resmouse         ;reinicia ratón
        mouse on         ; activa rarón
    
punto1:
        getmouse        ;espera  EST+ SIN PULSAR
        cmp ax,0
        jne punto1
pulsar1:      
        getmouse         ;verifica espera pulsación raton
        cmp ax,2      ;salir?
        jne sig1
        jmp fuera
sig1:      
        cmp ax,1      ;boton izquierdo?
        jne pulsar1
        getmousex
        mov x0,ax
        getmousey
        mov y0,ax
punto2:
        getmouse        ;espera soltar
        cmp ax,0
        jne punto2
pulsar2:     
        getmouse         ;verifica espera pulsación raton
        cmp ax,2      ;salir?
        jNe sg1
        JMP FUERA
SG1:      
        cmp ax,1      ;boton izquierdo?
        jne pulsar2
        getmousex
        mov x1,ax
        getmousey
        mov y1,ax
        dist_pixel x0,y0,x1,y1
     
        mov radio,ax

        mouse off
        mov ax,color        ;incremeta color en cada circulo
        inc ax
        and ax,0fh
        mov color,ax
      
        circle x0,y0,radio,color
        mouse on
      
        jmp punto1
fuera:
        modovideo t80col
        resmouse
        mouse off
        exit  0
principal endp

end

No hay comentarios:

Publicar un comentario

Si tienes algún comentario, duda o sugerencia, o si quieres aportar algún código creado a partir de las librerías expuestas aquí, por favor, indícamelo.