Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

возведение в квадрат


Страницы:   1 2 3

Green_Templar ©   (2005-05-20 00:29:00) 

Как в делфи грамотно возводить в квадрат?
Что лучше?
if exp(2*ln(abs(predator.x-prey.x) shr 3))+exp(2*ln(abs(predator.y-prey.y) shr 3))<=predator.eye then cansee1:=true else cansee1:=false;
или
((predator.x-prey.x) shr 3)*((predator.x-prey.x) shr 3)+((predator.y-prey.y) shr 3)*((predator.y-prey.y) shr 3)<=predator.eye then cansee1:=true else cansee1:=false;

Подскажите пожалуйста способ самого оптимального определения пересекаются ли круг и прямоугольник.


Defunct   (2005-05-20 08:49:00) [41]

Думкин ©   (20.05.05 08:39) [11]

Sqr это overload функция для разных типов, соответственно аргумент помещается в стек, внутри функции извлекается и повторно заноситмя в стек если аргумент с плавающей точкой. И того имеем как минимум:

1. вызов функции - занесение в стек EIP + извлечение EIP на выходе.
2. Резервирование в стеке места по результат: занесение результата в стек и извлечение из стека.
3. Занесение аргумента в стек и извлечение из стека.


при операции x * x как минимум пункты 1, 2 отсутствуют, а значит работает конструкция x * x однозначно быстрее, раз быстрее, значит грамотнее использовать именно ее.


Думкин   (2005-05-20 08:44:00) [42]

>  [10] Defunct ©   (20.05.05 08:37)

В случае integer - похоже так, а в случае extended - не получается.


Думкин   (2005-05-20 08:39:00) [43]

> [10] Defunct ©   (20.05.05 08:37)

Ну да.


Defunct   (2005-05-20 08:37:00) [44]

Думкин ©   (20.05.05 08:17) [8]

Обосновать чем x * x лучше sqr?


begin...end   (2005-05-20 08:18:00) [45]

> Экспериментатор   (20.05.05 08:01) [5]

Для возведения в квадрат всё же лучше Sqr.


Думкин   (2005-05-20 08:17:00) [46]

> [7] Defunct ©   (20.05.05 08:16)

И что?


Defunct   (2005-05-20 08:16:00) [47]

Думкин ©   (20.05.05 07:21) [4]

x * x


Думкин   (2005-05-20 08:08:00) [48]

> [3] Кщд ©   (20.05.05 06:25)

Зачем 5 и систему? Соединяем центр окружности и центр квадрата. Находим пересечение отрезка и квадрата. Смотрим - принадлежит ли о кругу.
Или пересечения с окружностью - смотрим принадлежит ли квадрату.


Экспериментатор   (2005-05-20 08:01:00) [49]

или Power из модуля math


Думкин   (2005-05-20 07:21:00) [50]

Грамотно в Дельфи возводить в квадрат - sqr.


Кщд   (2005-05-20 06:25:00) [51]

>Кто-нибудь знает хоть какой-нибудь способ как определить >пересекаются ли круг и прямоугольник :) ?

Решаем систему из 5-ти неравенств.
Если разрешима - пересекаются.
В чем сложность?


Green_Templar   (2005-05-20 03:48:00) [52]

Вах, канечно работают, только первый при подлогарифменном выражении равном нулю выдаёт сообщение о делении на 0.
Кто-нибудь знает хоть какой-нибудь способ как определить пересекаются ли круг и прямоугольник :) ?


jack128   (2005-05-20 00:40:00) [53]

а они оба работают?? ну тогда второй быстрее, конечно. в нём экспоненты и логорифма нету.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо