ZXNet эхоконференция «code.zx»


тема: Sinus function



от: Aleksey Malov
кому: Igor Kiselev
дата: 21 Jul 2000
Приветствую тебя, Igor!

Mon 3 Jul 2000 в 03:08:14 Igor Kiselev и All разговаривали
на тему Sinus function.

IK> Посвятите меня в сабж, а именно неплохо бы поиметь исходняк
IK> метода калькуляции синусной функции.
Если тебя интересуют методы генерации синусных таблиц для всяких эффектов, то
могу посоветовать мою процедуру.
Hемного теории:
Данная процедура не рассчитывает синусную таблицу, она лишь распаковывает ее из
17 байтовой таблицы данных.
В таблице хранятся вторые производные синусной функции для углов от 0 до 64
градусов (период функции не 360, а 256 градусов для удобства).

Hа входе
;D-старший байт адреса начала 512 байтовой знаковой синусной таблицы.
Hа выходе - таблица функции (HL)+(256+HL)=255sin(L)
INISIN LD HL,SINTAB-1
LD E,255
LD BC,#06FA
INS INC E
LD A,E
AND 3
JR NZ,$+3
INC HL
XOR A
RLC (HL)
RLA
RLC (HL)
RLA
DEC A
ADD A,B
LD B,A
ADD A,C
LD C,A
CALL INSSR
PUSH DE
LD A,128
SUB E
LD E,A
LD A,C
CALL INSSR
POP DE
BIT 6,E
JR Z,INS
RET
INSSR LD (DE),A
SET 7,E
NEG
LD (DE),A
INC D
SBC A,A
LD (DE),A
RES 7,E
XOR A
LD (DE),A
DEC D
RET
SINTAB ;упакованные данные
DB #58,#56,#15,#55
DB #49,#21,#85,#52
DB #21,#54,#88,#54
DB #85,#52,#15,#48,#55

Пример:
sinus equ #c000
ld d,sinus/256
call inisin
Получить значение синуса (от -255 до +255) можно так:
;в L-значение угла
ld h,sinus/256
ld e,(hl)
inc h
ld d,(hl)


Счастливо, Igor!
С вами был Vivid/Brainwave^X-Project.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Юмор - правила использования дискет.
body postbox - нам пишут.
Анкета - подписка на газету ZX-Pilot.
Обратная связь - контакты редакции.
Из книг - Домашняя библиотека: Каталог домашней библиотеки.

В этот день...   5 мая