Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 28.06.2011, 10:37   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Подмигивание "Ускорение" функций

void draw_string(uint8_t font_id, uint16_t x, uint16_t y, char *str)
{
    gfx_point2d_t pos;
    gfx_rect_t    rect;
    int i, nchar,n,m;

    pos.x = x;
    pos.y = y;
    rect.width = 24;
    rect.height = 24;
    i = 0;

    while (str[i] != 0) {
       nchar = str[i];
       pos.x+=12;
      for(n=0;n<16;n++){
          for(m=0;m<16;m++){
            if(n*16+m==nchar){
            //pos.x = i*24;
            rect.x =m*24; 
            rect.y =n*24;
            gfx_set_colorrop(0xcc);//api функции
            gfx_sprite(font_id, &rect, &pos);//api спрайта,рубит rect'ом ресует в pos
              }
             }
        }
        i++;
    }
}
пришлось писать такую функцию,ну как видно много циклов-меньше скорость,как "ускороить" её?(пока на скорость не влияет)
//целый корень....
int isqrt(unsigned x) { 
  unsigned m, y, b;
   m = 0x40000000;
   y = 0;
   while(m != 0) {              // Do 16 times.
      b = y | m;
      y = y >> 1;
      if (x >= b) {  x = x - b; y = y | m; }
      m = m >> 2;
   }
   return y;
 }
 
float fsqrt(unsigned float x){//дробный корень с 3 числами после знака...
 int p=isqrt(x*100000);
    float n=(1.0*x)/(p*p);
      int s=isqrt(n*1000000);
float m=1.0*p*(s/1000.0);      
return m/1000.0;     
}
а эта считает корень без сопра(сопроцессора),как видно много делений на большие числа и умножение,а пользоваться смещением не умею.. подкинте идеи.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 28.06.2011, 10:49   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: "Ускорение" функций

http://forum.boolean.name/showpost.p...4&postcount=10
корень
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
Igor (30.06.2011), Mr_F_ (28.06.2011)
Старый 28.06.2011, 11:05   #3
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: "Ускорение" функций

м,никак,у меня компилятор на строчки asm'а ругается,таких я уже много нашел...
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 28.06.2011, 16:53   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: "Ускорение" функций

квадратный корень с минимальной точностью
аы аы. насколько неточен? для дистанции кто-нибудь пробовал юзать? или вообще где-нибудь
(Offline)
 
Ответить с цитированием
Старый 28.06.2011, 18:21   #5
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: "Ускорение" функций

http://en.wikipedia.org/wiki/Fast_inverse_square_root
Вспомнилось сразу
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо Tadeus за это полезное сообщение:
Dream (29.06.2011), Mr_F_ (28.06.2011), Randomize (28.06.2011), St_AnGer (28.06.2011)
Старый 29.06.2011, 02:13   #6
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: "Ускорение" функций

подкиньте идеи как придумать теорему Пифагора !! (це)
(Offline)
 
Ответить с цитированием
Старый 29.06.2011, 04:08   #7
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: "Ускорение" функций

и сколько погрешность?лень проверять
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 29.06.2011, 04:12   #8
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: "Ускорение" функций

НУ КОЛЬ ЕСТЬ УЖЕ ВСЁ,синус(косинус) никто не знает как посчитать тогда?а то есть.но что-то не робит...
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 29.06.2011, 10:27   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: "Ускорение" функций

http://forum.boolean.name/showthread.php?t=1305
http://forum.boolean.name/showthread.php?t=17
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 29.06.2011, 11:33   #10
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: "Ускорение" функций

Я это мог и в вике посмотреть,а толку,у меня есть функция sin по рядам:
""лень искать""
100% есть и в коде у кого-нить....
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 29.06.2011, 15:17   #11
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: "Ускорение" функций

ленивый оптимизатор - это оксюморон.
ты тупой, какое отношение ты имеешь к оптимизации?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
Dzirt (29.06.2011), SBJoker (29.06.2011), St_AnGer (29.06.2011)
Старый 29.06.2011, 20:03   #12
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: "Ускорение" функций

а ещё есть асм-функция sincos - может быть полезно (мне было полезно)
http://www.gamedev.ru/code/tip/?id=3820
(Offline)
 
Ответить с цитированием
Старый 30.06.2011, 00:15   #13
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: "Ускорение" функций

sin и cos неплохо в ряд Тейлора.
Только значения больше пи (меньше минус пи) лучше не запихивать
вроде sin(x)=x-x3/3!+x5/5!-x7/7!...
P.S. с косинусом похоже, но там только чётные степени. Чем больше запишешь тем больше точность
P.P.S. А если нужна запредельная скорость с небольшой точностью то создай массив с поссчитанными значениями))
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 30.06.2011, 00:17   #14
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: "Ускорение" функций

Сообщение от Igor Посмотреть сообщение
Только значения больше пи (меньше минус пи) лучше на запихивать
ну-ка - ну-ка?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2011, 01:53   #15
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: "Ускорение" функций

Сообщение от Igor Посмотреть сообщение
P.P.S. А если нужна запредельная скорость с небольшой точностью то создай массив с поссчитанными значениями))
Заблуждение, это было актуально во времена медленных процессоров.
В данный момент честный расчёт sin / cos занимает меньше чем выборка из памяти. Можете замутить тест, удивитесь результатам.
__________________
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
impersonalis (30.06.2011), Mr_F_ (30.06.2011), St_AnGer (30.06.2011)
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 05:09.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com