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 09:20:00) [21]

Kerk ©   (20.05.05 09:11) [27]
Вот ты и ddfg, задолбал. Я и так defunct что в переводе значит мертвый.

begin...end ©   (20.05.05 09:13) [29]
да здесь я оказался не прав, так что сорри.


Думкин   (2005-05-20 09:18:00) [22]

> [30] SergP ©   (20.05.05 09:16)

Цыть. Точно. Извиняюсь. %) А было так просто. :)


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

> [30] SergP ©   (20.05.05 09:16)

?
Нарисуй если не трудно.


SergP   (2005-05-20 09:16:00) [24]


>  [28] Думкин ©   (20.05.05 09:13)
> >  [25] SergP ©   (20.05.05 09:10)
>
> Для такого случая можно ввести 0 условие. Проверять, что
> центр круга в квадрате. Пойдет?


ИМХО не пойдет... Такой случай может быть даже когда центр круга будет за пределами прямоугольника


begin...end   (2005-05-20 09:13:00) [25]

> Defunct ©   (20.05.05 9:07) [22]

Вы в CPU всё-таки посмотрите. Оно рульно будет.
А когда где-нибудь в модулях существующих на данный момент версий Delphi найдёте "overload функцию" Sqr, выкопайте мой скелет -- я хоть посмотрю.

> Defunct ©   (20.05.05 9:10) [24]

У меня нет времени разглядвать все это.

Скорости проверить -- время есть, а на скомпилированный код посмотреть -- времени нет? LOL.

> И у меня нет комплексов если вдруг ошибусь.

У меня тоже.


Думкин   (2005-05-20 09:13:00) [26]

>  [25] SergP ©   (20.05.05 09:10)

Для такого случая можно ввести 0 условие. Проверять, что центр круга в квадрате. Пойдет?


Kerk   (2005-05-20 09:11:00) [27]

Удалено модератором
Примечание: AutoModerator


Думкин   (2005-05-20 09:10:00) [28]

> [22] Defunct ©   (20.05.05 09:07)

Так CPU никто не скрывает. Можно посмотреть в суть "чуда". :)


SergP   (2005-05-20 09:10:00) [29]


> 1. центр(пересечение диагоналей) прямоугольника: два простых
> выражения
> 2. отрезок, соединяющий центры: уравнение прямой
> 3. пересечение с прямоугольником: четыре системы(по числу
> сторон)
> 4. принадлежность пересечения отрезка с прямоугольником
> к кругу: неравенство


ИМХО это неверно... круг с прямоуголником могут пересекаться, причем точка пересечения отрезков соединяющих центры с прямоугольником может и не принадлежать кругу...


Defunct   (2005-05-20 09:10:00) [30]

begin...end ©   (20.05.05 08:56) [18]

У меня нет времени разглядвать все это. И у меня нет комплексов если вдруг ошибусь.
Так что разглядывай и читай справку на здоровье все равно рано или позно забудешь.


Думкин   (2005-05-20 09:10:00) [31]

3. И систем 4 нет. Будет одна система из 2-х уравнений. Надо только из 4 вариантов выбрать один. А это все решается с полуплоскостями. Что опять же вычислимые выражения. Есть только один момент - в ряде случаев будет 2 системы. Выбор определяется простым вычислением опять же.


Defunct   (2005-05-20 09:07:00) [32]

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

Удивительно, но именно для Extended sqr почему-то работает быстрее причем примерно в 1.5 раза.


Думкин   (2005-05-20 09:04:00) [33]

>  [20] Кщд ©   (20.05.05 08:59)

Объяснил бы. Кабы ваш видел. Или... вижу. А решать вашу систему? К тому же одно выражение нелинейное?

1. Зачем диагоналей? Сложить и поделить на 2. Даны вершины?
2. И ради бога
3. Ну можно подумать об оптимизации
4. вычслимое выражение - подставляем координаты пересечения в выражение и находим его знак.

:)


Кщд   (2005-05-20 08:59:00) [34]

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

1. центр(пересечение диагоналей) прямоугольника: два простых выражения
2. отрезок, соединяющий центры: уравнение прямой
3. пересечение с прямоугольником: четыре системы(по числу сторон)
4. принадлежность пересечения отрезка с прямоугольником к кругу: неравенство

не ясно, чем - предложенный Вами - алгоритм лучше.
объясните?


Kerk   (2005-05-20 08:57:00) [35]

Defunct ©   (20.05.05 8:54) [16]
Вы что-то упускаете из виду CALL и RET


Нету там call/ret


begin...end   (2005-05-20 08:56:00) [36]

> Defunct ©   (20.05.05 8:54) [16]

> Ну если тебе не понятно, так что ж поделать.

Я же уже говорил Вам: вначале смотрим в справку, потом в исходники, потом в CPU, и только потом вякаем.


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

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

А вы таки сравните. Вот я сравнил. sqr для extended - выиграл.


Defunct   (2005-05-20 08:54:00) [38]

Думкин ©   (20.05.05 08:51) [14]

А зачем даже сравнивать?
Вы что-то упускаете из виду CALL и RET


begin...end ©   (20.05.05 08:51) [15]
Ну если тебе не понятно, так что ж поделать.


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

> [13] Defunct ©   (20.05.05 08:49)

Вы без всякого - сравните для extended оба варианта. Результаты сообщите. Хорошо?


begin...end   (2005-05-20 08:51:00) [40]

> Defunct ©   (20.05.05 8:49) [13]

Бред какой-то...


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

Наверх

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