home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / pcmag / vol7n11.zip / LN711.ZIP / DOLINE.BAS < prev    next >
BASIC Source File  |  1988-05-02  |  888b  |  29 lines

  1. SUB DoLine (X1#, Y1#, X2#, Y2#) STATIC
  2.  
  3.     IF ABS(X2# - X1#) < .01 THEN      'calc slope of line
  4.        My# = SGN(Y2# - Y1#)           'based on configuration
  5.        Mx# = 0                        'of the end points
  6.     ELSE
  7.        M# = (Y2# - Y1#) / (X2# - X1#)
  8.        IF ABS(M#) > 1 THEN
  9.           My# = SGN(Y2# - Y1#)
  10.           Mx# = SGN(X2# - X1#) / ABS(M#)
  11.        ELSE
  12.           My# = M# * SGN(Y2# - Y1#)
  13.           Mx# = SGN(X2# - X1#)
  14.        END IF
  15.     END IF
  16.  
  17. DrawPixel:
  18.  
  19.     IF POINT(X1#, Y1#) = 0 THEN PSET(X1#, Y1#) 'plot if black
  20.  
  21.     X1# = X1# + Mx#     'increment current pixel on screen
  22.     Y1# = Y1# + My#     '  whether or not a point was plotted
  23.         IF INT(X1#) = INT(X2#) AND INT(Y1#) = INT(Y2#) THEN _
  24.            EXIT SUB         'we reached the end of the line
  25.  
  26.         GOTO DrawPixel      'attempt to draw the next pixel
  27.  
  28.     END SUB
  29.