User Tag List

Страница 7 из 16 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя
Показано с 61 по 70 из 155

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

  1. #61

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

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    Лучше использовать деление как можно реже. В моём 3d-движке его вообще нет (если не считать деления +-6/6 бит по таблице).
    А как ты делаешь перспективу? Только не говори, что заменяешь деление умножением. А обратное число берешь из таблицы в несколько килобайт.

  2. #61
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #62

    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По такой же таблице.

  4. #63

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

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    По такой же таблице.
    Размер и разрядность таблицы какова?

  5. #64

    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Страничка. Разрядность вроде как 6/+-7.

  6. #65

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

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    Страничка. Разрядность вроде как 6/+-7.
    Страничка - это 16кб или 256 байт?

    Что такое 6/+-7?
    6 бит на входе, 7 со знаком на выходе?

  7. #66

    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Страничка - это 16 КБ.

    6 бит делимое, 7 бит со знаком делитель.

    Результат 7 бит со знаком.

  8. #67

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

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    Страничка - это 16 КБ.
    Страничка - это, конечно, многовато, особенно для 48Кб.

  9. #68

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оптимизировал свою программу вычисления периода косинуса. Удалось выиграть несколько байт кода. Теперь длина равна 54 байтам. Погрешность - такая же, как и у предыдущего варианта.
    Вложения Вложения

  10. #69

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,103
    Спасибо Благодарностей отдано 
    1,337
    Спасибо Благодарностей получено 
    323
    Поблагодарили
    152 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Привет!
    Реализовал синус многочленом.
    Вычисляется он на промежутке (0..PI/2), в остальные четверти копируется.

    Коэффициенты подобрал методоми "научного тыка" и "искусственного отбора".

    Получился такой алгоритм:
    Код:
    HL=32737
    BC=19
    DE=5461
    A=-20
    FOR X=64 TO 0 STEP -1
      SINTAB[X]=H
      A=A-2
      DE=DE+A
      BC=BC-D
      HL=HL+BC
    NEXT X
    Тоесть, строго говоря, я считаю косинус, но в итоге получается синус.
    Отклонение abs(SINTAB[X]-sin(X*PI/128)*127.5) не превышает 0.503. Это очень близко к идеальному 0.5

    И итоговый код:
    Код:
    sintabgen
      ld hl,sintab+#40
      ld d,h
      ld e,l
      exx
      ld hl,32737
      ld bc,19
      ld de,5461
      ld a,-20
      EX AF,AF'
    loop
      ld a,h
      exx
      ld (hl),a
      ld (de),a
      inc e
      dec l
      jr z,cont
      exx
      ld a,c
      EX AF,AF'
      add a,-2
      ld c,a
      add e
      jr c,$+3
      dec d
      ld e,a
      ld a,c
      EX AF,AF'
      sub d
      jr nc,$+3
      dec b
      ld c,a
      add hl,bc
      jr loop
    cont
      ld (hl),l
    loop2
      xor a
      sbc a,(hl)
      ld (de),a
      inc l
      inc e
      jr nz,loop2
    Это 55 байт кода.
    Понимаю, что не рекорд, но это другой вариант, а значит у него другой потенциал оптимизации.

    Писал в эмуляторе EmuZWin. "Генетический алгоритм" на дельфе7.
    Если кто захочет другую амплитуду или период - пишите, попробую подобрать коэффициенты. Прогу на дельфе не привожу, не из жадности а от стыда.
    Последний раз редактировалось Reobne; 26.11.2013 в 04:57.

  11. #70

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,081
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А будет процедура расчета точки синуса из периода? Быстро, без таблиц

    Вх. A=X [0..255]
    Вых. А=Y (значение синуса)

    Амплитуда и период должны меняться на входе в процедуру. Например задаются в HL.

Страница 7 из 16 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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