Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.26;
Скачать: CL | DM;

Вниз

А не устраивать ли нам небольшие конкурсы по кодингу?   Найти похожие ветки 

 
wiz ©   (2004-07-23 18:12) [640]

PPPS: для тех кто не хочет ждать до завтра пример:

//ПсихЪ code
function Fast_Distance_2D( x : integer; y : integer ) : integer;
var
mn : integer;
begin
x := abs( x );
y := abs( y );

if x < y then
  mn := x
else
  mn := y;

Result := ( x+y-( mn shr 1 )-( mn shr 2 )+( mn shr 4 ) );
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer;
 x,y,len:integer;
 worktime,dummy:double;
begin
dummy:=0;

TimerInit;
for i:=1 to max_iter do
 begin
 x:=random(10000)-5000;
 y:=random(10000)-5000;

 len:=Fast_Distance_2D(x,y);
 dummy:=dummy+len;
 end;
TimerTick;

edit1.text:=floattostr(dummy);
worktime:=timer_counter/max_iter * 10E9;
edit1.text:=format("%4.4f нс/выч",[worktime]);
end;

TimerInit, TimerTick - вызовы QueryPerformanceCounter;
dummy - чтобы компилер не "забил" на len;
edit1.text:=floattostr(dummy); - чтобы компилер не "забил" на dummy;
max_iter - очевидно количество итерации (1 000 000)


 
NailMan ©   (2004-07-23 18:19) [641]

Тоесть мой вариант на non-sqrt получился быстрее?

Сегодня у себя попробую потестить(AXP 3000+, DDR400 512Mb) аналогичный тест. И могу на AXP 2100+(DDR333) и Athlon 750(PC100).

---
WBR, NailMan aka 2:5020/3337.13


 
wiz ©   (2004-07-23 18:27) [642]

2 NailMan: я почти не сомневался, что

function Fast_Distance_2D_nailman_fast( x : integer; y : integer ) : integer;
begin
Result := x*x + y*y;
end;

на int"ах будет очень быстрым. Я сам пользуюсь именно таким (только на double"ах), т.к. обычно нафиг не надо брать корень (можно сравнивать квадраты).


 
OSokin   (2004-07-24 13:55) [643]

Слушайте, скачал с сайта паратрупер. Имхо, самая крутая графика в DeadMeat"а, но где враги?


 
NailMan ©   (2004-07-24 15:18) [644]

Оффтоп:
Ха! интересные результаты получились на моем варианте тестилки:

алгоритмы поиска столкновения сфера-сфера(3D) на синглах:

алгоритм(полностью процедуру я привел выше):

sQ:=Sqr(v2.x-v1.x) + Sqr(v2.y-v1.y) + Sqr(v2.z-v1.z);
If sq<=((r1+r2)*(r1+r2)) then result:=true;


выдал результат на 1млн итераций: 55 нс/итерация

алгоритм:
 
sQ:=(v2.x-v1.x)*(v2.x-v1.x) + (v2.y-v1.y)*(v2.y-v1.y) + (v2.z-v1.z)*(v2.z-v1.z);
If sq<=((r1+r2)*(r1+r2)) then result:=true;


выдал результат на 1млн итераций: 27.2 нс/итерация

Проц AXP3000+(2100MHz), мозг 512 DDR400.

Результат без использования SQR быстрей в 2 раза чем с этой функцией.

А если модифицировать так:
If (v2.x-v1.x)*(v2.x-v1.x) + (v2.y-v1.y)*(v2.y-v1.y) + (v2.z-v1.z)*(v2.z-v1.z)<=((r1+r2)*(r1+r2)) then result:=true else result:=false;

то получается: 24.4 нс/итерация

Вот она где сила....

---
WBR, NailMan aka 2:5020/3337.13


 
Zer0 ©   (2004-07-24 18:46) [645]

1. для бенчмарков вычисления дистанции рекомендую создать отдельный тред
3. есть оптимизации на притирки ассемблеровских команд.
2. а никто не заморачивался с fpu? ;)


 
cyborg ©   (2004-07-24 19:05) [646]

Попробуй ещё:

Result:=(v2.x-v1.x)*(v2.x-v1.x) + (v2.y-v1.y)*(v2.y-v1.y) + (v2.z-v1.z)*(v2.z-v1.z)<=((r1+r2)*(r1+r2));

Ещё одной проверкой меньше.


 
NailMan ©   (2004-07-24 21:10) [647]

Zer0 ©
Я заморачивался с 3DNow!. Фактически моя демка его активно использует, но об этом действительно надо в новой созданной ветке.

---
WBR, NailMan aka 2:5020/3337.13


 
}{enon ©   (2004-07-25 11:18) [648]

Собственно, тут появился один вопросик. Могу ли я использовать в своей игре чужой модуль (например, unit от чьего-нибудь ColorTetris"a)?


 
cyborg ©   (2004-07-25 11:21) [649]


> [648] }{enon ©   (25.07.04 11:18)

Можешь, только поблагодарить не забудь в титрах где нибудь. Это конечно, если у тебя совесть есть, ежели её нет, то это делать совсем не обязательно.


 
DeadMeat ©   (2004-07-25 14:44) [650]


> [643] OSokin   (24.07.04 13:55)

На врагов ты смотришь с самого начала... 5-пять корабликов пришелцев. Правда они сами в отпуске (лето всетаки) и поэтому корабли стоят на стоянке... А вообще если хочешь доделай, как я описывал ранее...

---
...Death Is Only The Begining...


 
Andr ©   (2004-07-25 15:40) [651]

to DeadMeat ©   (25.07.04 14:44) [650]
А ты что, доделывать не будешь?
Ты же обещал!


 
OSokin   (2004-07-25 16:00) [652]

[650] и [651]. Это правда. К тому же твой код - ты с ним можешь разобраться лучше. Это раз. У меня не дополнительных опенглюков. Это два. И третье - даже эти корабли пришельцев не уничтожаются.


 
DeadMeat ©   (2004-07-25 16:13) [653]


> [651] Andr ©   (25.07.04 15:40)

Не ну если так понравилось, то доделаю... Правда не скоро.


> [652] OSokin   (25.07.04 16:00)

До колижинов не дошел, но как уже сказал выше, выкрою время...

---
...Death Is Only The Begining...


 
wiz ©   (2004-07-25 16:20) [654]

2 }{enon:

в принципе - можешь... только советую тебе вначале спросить разрешение у того кто это написал, например и-мыльно... Не знаю точно, но я думаю здесь мало кто тебе откажет (в конце концов этот конкурс и задумывался, как опенсурс), так что этот вопрос (в некотором роде) формальность. Зато автору модуля будет приятно :)))


 
}{enon ©   (2004-07-25 17:50) [655]

Ок. Просто этот Xonix - моя вторая игра (первая была на DelphiX). Так что я не уверен, что успею освоить DerectDraw / OpenGL в установленный срок, а выводить графику через WinAPI как-то криво.


 
OSokin   (2004-07-25 17:57) [656]

Ага. Я пожертвовал размером и решил сделать на DelphiX.


 
DeadMeat ©   (2004-07-25 21:27) [657]

> Darthman
Не много не в тему, но всеже... Щас зашел на твою страничку (вдруг чего нового увижу :)) и заметил вот это

Описание всех правил игры и примера можно в разделе Xonix.

Как я понимаю, пропустил слово посмотреть
Это так... просто....

---
...Death Is Only The Begining...


 
Darthman ©   (2004-07-26 00:29) [658]

спасибки, поправлю :)
За себя говорю - мои исходники можно использовать как хошь, если не жаль будет, упомяни. Нет, Так нет :)


 
ПсихЪ_задумчивый   (2004-07-26 09:53) [659]

Исходники юзайте как хотите, мне не жалко. Только прошу не трогать идею Darthman"а в его Color Tetris"e. Ибо я её сейчас развиваю...

Окинул проблему Xonix"а своим программерским взглядом. Накодил парочку моделей. ДА!!! Косяков там целая туча. К тому же в комплексе это достаточно крутовато получается... (: Так что делание игры на работе мне представилось нереальным. Если найду в ближайшее время деньги на мать и проц, значится примаю участи. Нет, значит нет... ):

Всем хорошего кода!


 
Darthman ©   (2004-07-26 11:31) [660]

ПсихЪ_задумчивый:
Что же ты там мутишь (заинтересованно)? Обязательно покажешь :)


 
имя   (2004-07-26 17:34) [661]

Удалено модератором


 
}{enon ©   (2004-07-26 21:24) [662]


> ДА!!! Косяков там целая туча.

Может я чего-то не понимаю, но особых косяков там вроде бы нет... В классическом варианте все реализуется без особых проблем: волновой алгоритм, коллизия окружность-прямая и т.д. Можно конечно сделать клетки поля размером в 1 пиксель и возиться с отражением от кривой поверхности, но только зачем это нужно?


 
RagE ©   (2004-07-27 09:43) [663]

[662]
ты знаешь я еще за прогу не садился, только алгоритм обдумывал. И ты знаешь косяки есть, по крайней мере я увидел некую сложность  как определить отрезанный кусок, он же может быть любой формы. Я алгоритм надумал но будет ли работаь еще не знаю.


 
Darthman ©   (2004-07-27 10:46) [664]

Задачка хорошая? :) ИМХО сложная весьма... может быть продлевать придется.


 
Magikan ©   (2004-07-27 11:29) [665]

А что тут сложного - алгоритм заливки замкнутой фигуры


 
RagE ©   (2004-07-27 11:30) [666]

Darthman ©   (27.07.04 10:46) [664]
Да задачка довольно интересная. Я еще попутно с графикой разбираюсь :), Первый раз буду игру на API писать :) Да впринципе и игру тоже почти в первый :)


 
RagE ©   (2004-07-27 11:34) [667]

Magikan ©   (27.07.04 11:29) [665]
Тут сложным я считаю не залить фигуру а определить эту саму фигуру и есть ли в ней шарик. Вобщем то может все и просто но пока определенные трудности я уже вижу.


 
Darthman ©   (2004-07-27 11:39) [668]

Ну как определить есть ли в ней шарик я уже точно знаю. По методу Монте Карло тут просто все можно сделать. Вот.


 
Darthman ©   (2004-07-27 13:27) [669]

Хотя нет... это я сморозил, запутали меня, блин :(


 
RagE ©   (2004-07-27 14:22) [670]

А что за метод такой? Я даже не слышал о таком


 
Darthman ©   (2004-07-27 14:31) [671]

Да это вообще немного не отсюда, просто на работе голову заморочили :(


 
RagE ©   (2004-07-27 15:01) [672]

А все же? Интересно стало


 
Darthman ©   (2004-07-27 15:13) [673]

http://edu.ioffe.ru/register/?doc=efros/4.tex


 
RagE ©   (2004-07-28 09:24) [674]

Народ хелп плиз. У меня прога еще ничего не делает, только окно создает а уже весит 43к, а как только добавил в uses OpenGL12 113к стал. Неужели так и должно быть?


 
Darthman ©   (2004-07-28 10:08) [675]

SysUtils и Classes убери и будет не больше 30


 
П7   (2004-07-28 10:44) [676]

Точнее не совсем убери, а перенеси нужные тебе функции в отдельный файлик. Который и подключай вместо вышеназванных юнитов.


 
RagE ©   (2004-07-28 10:57) [677]

Сенкс попробую
Кстати пробовал вообще пустой проект откомпилить
program test
begin
end.
13 кил получается
нездорово это как то


 
Megabyte-CeerCop ©   (2004-07-28 11:37) [678]

У меня пустой, без Uses - 8 кб.


 
RagE ©   (2004-07-28 12:05) [679]

Megabyte-CeerCop ©   (28.07.04 11:37) [678]
Можешь дать свои настройки проекта? Всеже интересно чего я не так делаю, или пришли плиз уже скомпиленный exe. Я свой смотрел там куча пурги разной есть и вполне ненужной но как отключить не знаю.


 
Darthman ©   (2004-07-28 12:05) [680]

Удалено модератором



Страницы: 1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 16 17 18 
19 20 21 22 23 24 25 26 27 
вся ветка

Текущий архив: 2004.12.26;
Скачать: CL | DM;

Наверх




Память: 1.59 MB
Время: 0.407 c
1-1102606780
Wolffgang
2004-12-09 18:39
2004.12.26
Hot key?


4-1100372717
TSoftman
2004-11-13 22:05
2004.12.26
Убрать системное меню


14-1102073326
Alex*
2004-12-03 14:28
2004.12.26
Аналог утилты "Быстрый просмотр" в Win 2000 и XP


4-1100336714
S@lik
2004-11-13 12:05
2004.12.26
Флеш диск


1-1102675331
Pete
2004-12-10 13:42
2004.12.26
Проблема с выбором кодировок