User Tag List

Показано с 91 по 100 из 155

Тема: Генерация синуса

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,394
    Спасибо Благодарностей отдано 
    1,702
    Спасибо Благодарностей получено 
    2,219
    Поблагодарили
    873 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию Другой алгоритм

    Для разнообразия вот еще вам такой синус:

    Код:
    	org	$8000
            
    	LD	B,201		; Длина таблицы синуса
    	LD	HL,$8100	; Адрес начала таблицы синуса
    	EXX			;
    	XOR	A		;
    	LD	H,A		;
    	LD	L,A		;
    	PUSH	HL		;
            LD      IXL,$FE         ;	
    	JR	LoopIn		;
    
    ;------------------------------- 
    MLoop:	
    	EXX			;
    	SBC	HL,BC		;
    	SBC	A,IXL		;
            LD      IXL,D           ;
    
    ;-------------------------------
    LoopIn:								
    	LD	D,A		;
    	ADD	A,A		;
    	SBC	A,A		;
    	LD	IXH,A		;
    	LD	A,D		;
    	LD	E,H		;
            LD      B,3             ;
    RLoop:	SRA	D		;     
    	RR	E		;
    	DJNZ	RLoop		;
    	POP	BC		;
    	PUSH	HL		;
    	SBC	HL,DE		;
            LD      D,A             ;
    	SBC	A,IXH		;
    	ADD	HL,HL		;
    	ADC	A,A		;
    	EXX			;
    	LD	(HL),A		;
    	INC	L		;
    	DJNZ	MLoop		;	
            POP     AF              ;
    	RET			;
    Не самый короткий алгоритм - 53 байта.
    Да и есть некие ограничения. Длина получаемой таблицы... 201 байт)

    Однако, есть и плюсы - высокая точность (теоретически, т.к. это не аппроксимация а чистый синус). В таблице можно сохранять не 8 бит, а все 16 (а то и 24, т.к. в алгоритме 24-битная арифметика).
    Так же возможна любая амплитуда.
    Можно было бы сделать таблицу 256 байт, но это усложнило бы алгоритм, и он бы стал громоздким.

    Изначально думалось, что алгоритм будет компактнее, т.к. я уже привык к 32-битным ARM-ам, где подобный алгоритм получился бы не более, чем за 10 команд.

    Кто первый догадается, что за алгоритм - тому конфетка)

    Из бейсика вывел полученную таблицу, поделив результат на 2. Вроде все норм.
    Последний раз редактировалось Titus; 30.11.2013 в 04:44.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Качение синуса
    от Hacker VBI в разделе Программирование
    Ответов: 38
    Последнее: 08.04.2013, 00:40
  2. Генерация лабиринтов
    от TomCaT в разделе Программирование
    Ответов: 90
    Последнее: 26.06.2012, 10:59
  3. День рождения Синуса!
    от valeron в разделе Поздравления
    Ответов: 9
    Последнее: 19.05.2010, 15:31
  4. Генерация матрицы клавиатуры
    от AlexCrush в разделе Программирование
    Ответов: 5
    Последнее: 23.01.2007, 15:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •