Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Dmitry Kalinin                       2:5009/5.43    15 Aug 2001  19:53:46
 To : Alexander Lunkov
 Subject : Re: алгоpитмы ищy
 -------------------------------------------------------------------------------- 
 
 
 13 Авг 01 22:11, Alexander Lunkov -> All:
 
  AL>     Ищy алгоpитмы pисования геометpических фигyp (квадpат, линия и
  AL> т.д.). Жел-но с pеализацией на ассемблеpе.
 
 Вот рисование линии, ddsd.lpSurface - указатель на начало экрана
                      ddsd.dwWidth   - Ширина экрана
 Рисует линию в режиме 32bpp.
 
 @start:
     push    edi
     push    ebx
 // Расчет смещения
         mov     edi, ddsd.lpSurface
         mov     eax, y1
         mov     ecx, ddsd.dwWidth
         mul     ecx
         add     eax, x1
         shl     eax, 2
         add     edi, eax
 // Расчет dY
         shl     ecx, 2
         mov     eax, y2
         sub     eax, y1
         jns     @dy_plus
                 neg     eax
                 neg     ecx
         @dy_plus:
         mov     _dy, eax
         mov     incy, ecx
 // Расчет dX
         mov     ecx, 4
         mov     eax, x2
         sub     eax, x1
         jns     @dx_plus
                 neg     eax
                 neg     ecx
         @dx_plus:
         mov     _dx, eax
         mov     incx, ecx
 // Выбор цикла (по X или по Y)
         cmp     eax, _dy
         jl      @loop_by_y
 // Цикл по X
         @loop_by_x:
     // Подготовка к рисованию линии
                 mov     ecx, eax                // Кол-во точек
                 mov     edx, ecx                // Hачальное
                 neg     edx                     // управляющее слово
                 shl     _dx, 1                  // Корректировка dX
                 mov     ebx, _dy                // Корректировка dY
                 shl ebx, 1                      //
                 mov     eax, color              // Цвет
     // Рисование линии
                 @pixel_x:
                         mov     dword ptr [edi], eax
                         add     edx, ebx
                         js      @dx_minus
                                 sub     edx, _dx
                                 add     edi, incy
                         @dx_minus:
                         add     edi, incx
                 dec     ecx
                 jns     @pixel_x
         jmp @end
 // Цикл по Y
         @loop_by_y:
     // Подготовка к рисованию линии
                 mov     ecx, _dy                // Кол-во точек
                 mov     edx, ecx                // Hачальное
                 neg     edx                     // управляющее слово
                 shl     _dy, 1                  // Корректировка dY
                 mov     ebx, eax                // Корректировка dX
                 shl ebx, 1                      //
                 mov     eax, color              // Цвет
     // Рисование линии
                 @pixel_y:
                         mov     dword ptr [edi], eax
                         add     edx, ebx
                         js      @dy_minus
                                 sub     edx, _dy
                                 add     edi, incx
                         @dy_minus:
                         add     edi, incy
                 dec     ecx
                 jns     @pixel_y
 // Завершение процедуры
 @end:
     pop ebx
     pop     edi
 
     Квадрат - набор, горизонтальных линий.
 Dmitry
 ... "Hа краю обрыва песня неземная, музыка богов и голоса богинь" (c) 1996 Ария.
 Ангельская пыль
 --- 0f 0f 0e 0e 0e 0e 0c 0c 0a 09 09 06 03 00 00 00 ДВБВДБДДВДДДДДБДДДДД
  * Origin: bESt reGUARdS (2:5009/5.43)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 алгоpитмы ищy   Alexander Lunkov   13 Aug 2001 22:11:18 
 Re: алгоpитмы ищy   Dmitry Kalinin   15 Aug 2001 19:53:46 
Архивное /ru.algorithms/27843b7a9bd8.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional