User Tag List

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

Тема: ЭТЮДЫ

  1. #981

    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,104
    Спасибо Благодарностей отдано 
    1,340
    Спасибо Благодарностей получено 
    323
    Поблагодарили
    152 сообщений
    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;

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

    shurik-ua(29.04.2020)

  2. #982

    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    365
    Поблагодарили
    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.

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

    Reobne(29.04.2020)

  3. #983

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

    shurik-ua(29.04.2020)

  4. #984

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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



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

  5. #985

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

    По умолчанию

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

  6. #986

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #987

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  8. #988

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

  9. #989

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,823
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    ALKO(05.06.2020)

  10. #990

    Регистрация
    25.09.2009
    Адрес
    Одесса
    Сообщений
    2,311
    Спасибо Благодарностей отдано 
    96
    Спасибо Благодарностей получено 
    186
    Поблагодарили
    89 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

Похожие темы

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

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

Ваши права

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