Важная информация

User Tag List

Страница 99 из 110 ПерваяПервая ... 9596979899100101102103 ... ПоследняяПоследняя
Показано с 981 по 990 из 1094

Тема: ЭТЮДЫ

  1. #981
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,042
    Спасибо Благодарностей отдано 
    934
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    спасибо всем откликнувшимся - задача для меня решена )

    Ещё, на всякий случай, озвучу такую мысль:
    Можно попробовать оптимизировать. Перед тем как вычислять сумму квадратов разностей, то есть попадание в окружность, можно сразу отсеять то, что не попадает в описанный квадрат. Как бы:
    DX:=abs(x1-x2);
    IF DX>R THEN EXIT;
    DY:=abs(y1-y2);
    IF DY>R THEN EXIT;
    IF SQR(DX)+SQR(DY)>R2 THEN EXIT;

  2. Этот пользователь поблагодарил Reobne за это полезное сообщение:

    shurik-ua (29.04.2020)

  3. #982
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    да про это я подумал

    Код:
    function in_range(x1,y1,x2,y2,range: dword):boolean;
    var
      dx,dy: dword;
    begin
      result:=false;
      if x1>x2 then dx:=x1-x2
      else dx:=x2-x1;
      if dx > range then exit;
      if y1>y2 then dy:=y1-y2
      else dy:=y2-y1;
      if dy > range then exit;
      if (range*range) > dx*dx + dy*dy then result:=true;
    end;
    Последний раз редактировалось shurik-ua; 29.04.2020 в 05:34.

  4. Этот пользователь поблагодарил shurik-ua за это полезное сообщение:

    Reobne (29.04.2020)

  5. #983
    Master Аватар для LW
    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    954
    Спасибо Благодарностей отдано 
    228
    Спасибо Благодарностей получено 
    1,010
    Поблагодарили
    322 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shurik-ua Посмотреть сообщение
    забыл добавить - всё это нужно для целых чисел
    существует ли такая формула без извлечения корня ?
    для таких задач можно использовать алгоритм приближенного вычисления гипотенузы

    гипотенуза = maxКатет + 0.41 * minКатет (насколько помню, погрешность около 5%)

    либо другой вариант, точнее, но и затратнее по тактам

    гипотенуза = maxКатет + 0.428 * minКатет * minКатет / maxКатет (погрешность около 1%)

  6. Этот пользователь поблагодарил LW за это полезное сообщение:

    shurik-ua (29.04.2020)

  7. #984
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хотел спросить по табличкам SIN-COS вращения относительно игрока.



    В каком виде их оптимальнее всего хранить? Ну, в смысле, неужели надо множество окружностей диаметром с итерацией от центра к краю хранить ? Или можно как-то более экономно. Знаю, что можно ещё на четвертинке сэкономить.

  8. #985
    Member
    Регистрация
    25.11.2015
    Адрес
    г. Москва
    Сообщений
    192
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    14 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Окружности скорее всего рисуются вообще без всяких таблиц. А если синусов и косинусов считать нужно много, значит в табличках должны быть указатели на функции которые будут выполнять умножение радиуса на константу соответствующую синусу заданного угла. Это как таблица из 256 функций выполняющих умножения на всевозможные значения байта, только ячейки вне заполнены так, чтобы умножение происходило на значения синуса.

  9. #986
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от blackmirror Посмотреть сообщение
    Окружности скорее всего рисуются вообще без всяких таблиц.
    Я имею ввиду окружности позиционирования объектов относительно игрока.

  10. #987
    Master Аватар для LW
    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    954
    Спасибо Благодарностей отдано 
    228
    Спасибо Благодарностей получено 
    1,010
    Поблагодарили
    322 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А собственно зачем их хранить?
    В игровом пространстве объекты перемещаются согласно своему алгоритму, игрок перемещается так вообще непредсказуемо.
    Всё это рассчитывается из координат объекта и игрока.

  11. #988
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Решился наконец-то на покорение 128к формата.
    По крайней мере теневой экран удалось заюзать.
    Но в итоге доступной памяти стало на 16кб меньше, ибо переключаемую банку только для экрана и использую каждый кадр. Поэтому пришлось и стэк переместить, и своих данных туда уже не затолкать (разве что дублировать на обе банки)
    И вот назрел вопрос, как затолкать графику в виде DEFB массивов хотя бы в остальные банки?
    Org ведь не может превышать 65535
    Да и как её потом оттуда извлекать?

    - - - Добавлено - - -

    Цитата Сообщение от LW Посмотреть сообщение
    А собственно зачем их хранить?
    В игровом пространстве объекты перемещаются согласно своему алгоритму, игрок перемещается так вообще непредсказуемо.
    Всё это рассчитывается из координат объекта и игрока.
    В игровом пространстве многое предсказуемо, даже псевдо-рандом.

    Зачем их хранить? Во благо скорости, разумеется.

    перемещаются согласно своему алгоритму
    И это отрицает тот факт, что многие алгоритмы (особенно на спеке) опираются на табличные значения?
    Даже прыжки марио, и те прекалькулированы.

  12. #989
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,802
    Спасибо Благодарностей отдано 
    249
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    88 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    И вот назрел вопрос, как затолкать графику в виде DEFB массивов хотя бы в остальные банки?
    Org ведь не может превышать 65535
    Обычно компилятор понимает такое:
    Код:
    Page n                      ; n=номер нужной страницы
    org #c000                   ; начало страничной области
    incbin "graphic.scr"        ; ну или твои DEFB
    Потом или вернуть страницу (и ORG) куда надо или просто ставить эту конструкцию в конце листинга кода...

  13. Этот пользователь поблагодарил Destr за это полезное сообщение:

    ALKO (05.06.2020)

  14. #990
    Guru Аватар для ALKO
    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,257
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    183
    Поблагодарили
    86 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Чем больше представляю себе грядущий гемор, тем больше хочется вернуться в блаженные 48к.
    Тут же в распоряжении лишь одно активное окно, которое и в роли фрейм-буфера, и в роли хранилища данных... Ух. Сложновато.
    Наверное погорячился я с тем, что сунулся в эти дебри.

Страница 99 из 110 ПерваяПервая ... 9596979899100101102103 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Этюды: как бы написать поизящнее.
    от AndTorp в разделе Программирование
    Ответов: 5
    Последнее: 17.03.2008, 00:43
  2. Ответов: 0
    Последнее: 18.08.2006, 22:40
  3. Этюды: печать шрифтом 5x5...
    от breeze в разделе Программирование
    Ответов: 12
    Последнее: 27.03.2005, 05:21

Метки этой темы

Ваши права

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