![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
возведение в квадрат
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]
Бред какой-то...