Документация к свободной библиотеке vectors.asm, для ОС Колибри.

Последнее обновление библиотеки 01.09.09.

Функции

vect_line

Рисует линию на экране.

; [esp+8] = p0
; [esp+12] = p1
; [esp+16] = color

vect_conv_cont

Преобразует координаты заданного контура из декартовой системы координат в полярную.

; [esp+8] = contur

vect_draw_cont

Рисует фигуры с учетом заданной центральной точки и угла поворота

; [esp+8] = x0,y0,a0,...
; [esp+12] = contur
; [esp+16] = color

vect_opred2i

Определяет длину и угол поворота вектора по двум координатам

; ebp+8  = adress int coord x
; ebp+10 = adress int coord y

Переменные

vect_o_len dd ?

Длинна вектора, которая вычисляется функцией vect_opred2i

vect_o_ang dd ?

Угол порота вектора в радианах, вычисляется функцией vect_opred2i

Как использовать библиотеку

1. Подключаем библиотеку как и остальные библиотеки в Колибри. Пример таблицы экспорта:

align 4
vectors_lib_import:
  vect_line dd av_line
  vect_conv_cont dd av_conv_cont
  vect_draw_cont dd av_draw_cont
  vect_opred2i dd av_opred2i
  vect_o_len dd av_o_len
  vect_o_ang dd av_o_ang
  dd 0,0
  av_line db 'vect_line',0
  av_conv_cont db 'vect_conv_cont',0
  av_draw_cont db 'vect_draw_cont',0
  av_opred2i db 'vect_opred2i',0
  av_o_len db 'vect_o_len',0
  av_o_ang db 'vect_o_ang',0

2. Подключаем файл vectors.inc. Пока в нем содержится 1-на константа, но дальше он должен будет дополнится и другими.

include 'vectors.inc' ;vectors functions constant

3. Задаем параметры центральной точки (имя может быть любое):

sam:
  .x dd 180.0
  .y dd 100.0
  .a dd 0.0 ;angle
  .s dd 1.0 ;scale

4. Задаем число точек в каждом контуре и координаты точек (имя контура любое).

cont:
  dw 21
  dd -2.0,-12.0, -2.0,-10.0, -4.0,-9.5, -4.0,-8.5, -2.0,-7.0, -2.0,-6.0, -7.0,-5.0, -7.0,-3.0, -2.0,1.0, -2.0,3.0
  dd 0.0,5.0, 2.0,3.0, 2.0,1.0, 7.0,-3.0, 7.0,-5.0, 2.0,-6.0, 2.0,-7.0, 4.0,-8.5, 4.0,-9.5, 2.0,-10.0, 2.0,-12.0
  dw 2
  dd 0.0,5.0, 0.0,8.5
  dw 2
  dd -2.0,-10.0, 2.0,-10.0
  dw 2+VECT_PARAM_COLOR
  dd 0x0080d0
  dd 0.0,0.0, 0.0,2.0
  dw 0

5. Если координаты точек в контуре заданы не полярной системе координат, то вызываем функцию для их преобразования:

push dword cont
call [vect_conv_cont]

6. Рисуем наши фигуры:

push dword 0xff ;первоначальный цвет
push dword cont      ;координаты контуров (фигура)
push dword sam       ;параметры начальной точки
call [vect_draw_cont]

7. При необходимости коректируем параметры начальной точки и делаем новые перерисовки