|
3D-программирование Вопросы, касающиеся программирования 3D мира |
02.04.2009, 22:16
|
#16
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
Товарисч Веном, извольте выложить ваши тесты.
Я выражаю сомнение в их адекватности (хотя отдаю должное вашему математическому гению) )))))
__________________
|
(Offline)
|
|
02.04.2009, 22:28
|
#17
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
кстати да, тесты фстудию!
|
(Offline)
|
|
03.04.2009, 10:00
|
#18
|
Оператор ЭВМ
Регистрация: 25.02.2008
Сообщений: 24
Написано 8 полезных сообщений (для 30 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
Сообщение от impersonalis
Товарищ, я по математике не блистал познаниями, да и прогером формально никогда не был, но уже начало вашего кода уныло чуть боее чем полностью.
|
И чем же оно "уныло"? Цитаты приведи с пояснениями или только ля-ля-тополя?
Сообщение от impersonalis
Откуда эти константы (в плане - хрен ли так оформлено, а не - откуда взяты значения)? Где переменные?
|
В упор не вижу констант, где ты их там нашел? Или ты иеешь ввиду угол и дальность обзора? Так я их для примера взял. Непонимаю.
Сообщение от impersonalis
Почему код настолько конкретен (простая смена разрешения рушит всё к чертям)?
|
Что она рушит? Прямо сейчас сменил разрешение - все работает как работало. Тоже непонимаю
Сообщение от impersonalis
Вызов функции Text сжирает производительность многократно.
|
Помоему это даже любому нубу понятно что функции Text использованы не более чем для наглядности, для проверки работает или нет.
Сообщение от impersonalis
Уважайте чужой труд - ссылка на Carmack’s Unusual Inverse Square Root (game/code/q_math.c) не помешает
|
Ну если этот быстрый обратный корень Кармак придумал - честь и хвала ему, я не знал, припомнить откуда я этот трюк вычитал я уже не смогу, давно это было.
ЗЫ
Хотите тесты? Их есть у меня!
;kernel32.decls:
;
;.lib "kernel32.dll"
;Sleep(time%)
;QueryPerformanceCounter(count*)
;QueryPerformanceFrequency(frequency*)
;Для расчета времени из 64-битных значений RDTSC:
;Код на PureBasic:
;ProcedureDLL.f Time(*cnt1.QUAD, *cnt2.QUAD, *freq.QUAD)
; ProcedureReturn (*cnt2\q - *cnt1\q) * 1000.0 / *freq\q
;EndProcedure
;Оригинал
Function entity_in_view1%(from%, what%, dist#, view#)
If (EntityDistance(from, what) < dist) Then
If ((Abs(DeltaYaw(from, what)) < view) And (Abs(DeltaPitch(from, what)) < view)) Then
Return 1
EndIf
EndIf
Return 0
End Function
;Аналог
Function entity_in_view2%(from%, what%, dist#, view#)
Local xsub#, ysub#, zsub#, temp#
xsub = EntityX(what) - EntityX(from)
ysub = EntityY(what) - EntityY(from)
zsub = EntityZ(what) - EntityZ(from)
temp = xsub * xsub + ysub * ysub + zsub * zsub
If (temp < dist) Then
temp = 1.0 / Sqr(temp)
xsub = xsub * temp
ysub = ysub * temp
zsub = zsub * temp
temp = xsub * GetMatElement(from, 2, 0) + ysub * GetMatElement(from, 2, 1) + zsub * GetMatElement(from, 2, 2)
If (temp > view) Then
Return 1
EndIf
EndIf
Return 0
End Function
Const CDIST# = 10.0 ;Расстояние обзора
Const CVIEW# = 25.0 ;Угол обзора (+\-)
Local from%, what%, dist#, view#
Local cnt1%, cnt2%, freq%, pass%, res1#, res2#
Graphics3D(800, 600, 32, 2)
SetBuffer(BackBuffer())
;Два обьекта
from = CreateCube()
what = CreateCube()
;Отодвигаем немного
PositionEntity(from, 0.0, 0.0, +3.0)
PositionEntity(what, 0.0, 0.0, -3.0)
;Банки для RDTSC
cnt1 = CreateBank(8)
cnt2 = CreateBank(8)
freq = CreateBank(8)
;Оригинал -------------------------------------------------
dist = CDIST
view = CVIEW
Sleep(25)
QueryPerformanceCounter(cnt1)
For pass = 1 To 1000000
entity_in_view1(from, what, dist, view)
Next
QueryPerformanceCounter(cnt2)
QueryPerformanceFrequency(freq)
res1 = Time(cnt1, cnt2, freq)
;--------------------------------------------------------
;Аналог -------------------------------------------------
dist = CDIST * CDIST
view = Cos(CVIEW)
Sleep(25)
QueryPerformanceCounter(cnt1)
For pass = 1 To 1000000
entity_in_view2(from, what, dist, view)
Next
QueryPerformanceCounter(cnt2)
QueryPerformanceFrequency(freq)
res2 = Time(cnt1, cnt2, freq)
;--------------------------------------------------------
RuntimeError("Оригинал: " + Str(res1) + Chr(13) + "Аналог: " + Str(res2))
End
К сожалению RDTSC юзают 64-битные переменные, потому пришлось написать вспомогательную DLL для расчета, исходник на PureBasic в начале приведен, там же и нужный decls.
Ну или качайте аттач с dll и деклсами, у кого PureBasic нету или кому просто лень
Последний раз редактировалось Venom, 03.04.2009 в 10:08.
|
(Offline)
|
|
03.04.2009, 12:20
|
#19
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
Graphics3D(300, 400, 0, 2)
а так? окно появится в центре - мышка же упорно позиционируется за пределами окна. В фуллскирне вроде как будет работать, но при этом курсор "очень удобно" весит где-то в углу (причём в зависимости от разрешения) - проджектед по нему не взять, и ещё кучка бонусов, вызванная несимметричностью позиционирования.
Константы:
25
100
10
25
0.35
400
300
0.00277778
+85.0 (плюс! 85 целых ноль(!) десятых)
-85.0
200,208 (ладно - спишем, что это типа пример. хотя тогда непонятно, почему в других местах педантичность зашкаливает за пределы разумного)
+0.5 (опять)
-0.5
Про TEXT понтно нубам? Нет! Для кого вообще написан семпл. Код представляет собой стилистический оксюморон, который, как правило, выдаёт в авторе компилятора (в литератнуом плане) чужих работ, неспособного создать монолит кода.
Вам непонятно чем код уныл? Обзор в предыдущем посте, ещё подробнее - в настоящем.
Абстракция кода убита напрочь мощными выпадами конкретики: это и бесконечные константы (каждый раз когда я вижу все эти циферки, начинаю думать, что автору некорректно преподавли в школе - ибо концепция т.н. ленивых вычислений нервно курит; разобраться затем что и откуда и и можно ли это сократит с тем - будет чертовски сложно, это как при решении задачи сразу вместо именованных констант их значения подставить - ох веслуха. Это типа goto-стайл, единственное оправдание которому тут: http://forum.boolean.name/showthread.php?t=8035), это и ничем неоправданная избыточность:
If (yang > +85.0) Then
yang = +85.0
EndIf
If (yang < -85.0) Then
yang = -85.0
EndIf
|
у вас что - бот будет иметь несимметричны портал обзора (т.е. разный обзор левого
правого глаза, раз мы говорим про вращение вокруг ординаты)? это есть в ТЗ или описании? Может лучше всё же:
If (Abs(yang)>yaw_max)
yang=Sgn(yang)*yaw_max
EndIf
|
И тут же - хренак! Корень видите ли тормозит! Ну дак возьми сколько тебе нужно членов степенного ряда и не мучайся со сборкой и вставкой в проект ДЛЛ (ох полегчало)..
И т.д. и т.п. по-моему я и так потратил на доказательство вам того, что вы принципиально не будете воспринимать достаточно своего времени.
С уважением, Философствующее Говно можете не обижаться, мой пост - реакция на ваши немеренные амбиции (т.е. я мог бы пройти мимо, но не после поста 13)
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
Последний раз редактировалось impersonalis, 03.04.2009 в 12:25.
|
(Offline)
|
|
03.04.2009, 12:51
|
#20
|
Бывалый
Регистрация: 29.03.2007
Сообщений: 662
Написано 199 полезных сообщений (для 448 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
Во молодежь пошла, не импера, не тормоза не уважают =\
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.04.2009, 13:10
|
#21
|
Знающий
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
|
(Offline)
|
|
03.04.2009, 13:14
|
#22
|
Знающий
Регистрация: 04.10.2008
Адрес: Киев
Сообщений: 230
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
ладно сдаюсь...хелпы фстудию!...
|
(Offline)
|
|
03.04.2009, 13:17
|
#23
|
Оператор ЭВМ
Регистрация: 25.02.2008
Сообщений: 24
Написано 8 полезных сообщений (для 30 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
Сообщение от impersonalis
Graphics3D(300, 400, 0, 2)
а так? окно появится в центре - мышка же упорно позиционируется за пределами окна.
|
Издеваешься? Тямы вынести разрешение в константы и использовать в MoveMouse не хватает?
Const SCREEN_W = 300
Const SCREEN_H = 400
Const CENTER_X = SCREEN_W / 2
Const CENTER_Y = SCREEN_H / 2
...
Graphics3D(SCREEN_W, SCREEN_H, 0, 2)
...
MoveMouse(CENTER_X, CENTER_Y)
По поводу непонятных тебе циферок - читай что я раньше написал, все что надо было я прокомментировал, остальное данной задачи не касается.
Сообщение от impersonalis
у вас что - бот будет иметь несимметричны портал обзора (т.е. разный обзор левого
правого глаза, раз мы говорим про вращение вокруг ординаты)?
|
Почему не симметричный, вверх обзор 85 градусов, вниз обзор 85.
В представлении -180...+180 это будет -85...+85 градусов.
ЗЫ
Вроде как под обсуждением находится алгоритм и его код,
а не код примера набросаный на скорую руку только чтобы показать что он работает.
Поэтому твои придирки считаю неадекватными как и тебя самого, более обьясняться не намерен,
кому надо тот поймет что к чему и использует код по назначению, а кому язык почесать - идите лесом.
|
(Offline)
|
|
03.04.2009, 13:48
|
#24
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
кому надо тот поймёт и без твоего кода разберётся),а с твоим:
ладно сдаюсь...хелпы фстудию!...
|
Const SCREEN_W = 300
Const SCREEN_H = 400
Const CENTER_X = SCREEN_W / 2
Const CENTER_Y = SCREEN_H / 2
|
я и говорю - тут не пример на скору руку,а банальное незнание ряда базовых функций. Спорить, о том что константы зло, и про причудливого программиста, который зачем-то в примерах пишет криво, потому что это пример,а не серьёзный проект - бессмысленно - это статистика.
Почему не симметричный, вверх обзор 85 градусов, вниз обзор 85.
|
Потому и не имеет смысла описывать эти границы отдельно - см. мой код, хотя ты реально не читаешь что я пишу, а лишь оправдываешься.
Вроде как под обсуждением находится алгоритм и его код,
а не код примера набросаный на скорую руку только чтобы показать что он работает.
|
именно! но у тебя с одной стороны черновик с другой педантичность - не понятно как его рассмаривать, то-ли копипастить как оталженный и провернный, толи с нуля переписывать. Что тебе Тормоз и сказал - у тебя классический случай "пришивание польто к пуговице","за дереьвями леса не видно".
а кому язык почесать - идите лесом.
|
ну так и почитай свои посты)
Поэтому твои придирки считаю неадекватными как и тебя самого,
|
как знаешь)
думаю, код мы обсудили в достаточной степени, а личности - обсуждать бессмысленно
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
03.04.2009, 14:13
|
#25
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
Сообщение от Android
Во молодежь пошла, не импера, не тормоза не уважают =\
|
да не - я недолюбливаю систему авторитетов (кроме той, что собирается на базе статистики). Не хочу, чтоб форум стал повторением инцидента на ИзвестномФоруме.
Однако непуганные пользователи - ещё не знают, что такое придирки, но придираются сами.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.04.2009, 16:19
|
#26
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
Собстно нормально оформленных тестов не увидел
создай бб-ешник с 2 функциями - проверка стандартны и твоим методом, сделай в цикле вызов проверки достаточное число раз (например 1000), сделай переключение между методами по клавише и вывод результата на экран.
вот это будет корректный тест
и если разница на 1000 вызовов будет менее 1 мс то я считаю что я прав, а ты изобрел очередной велосипед с квадратными колесами
__________________
|
(Offline)
|
|
03.04.2009, 16:28
|
#27
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
меня больше смутило это - "$5F3759DF". понятно, что это как то связано с квадратным корнем, но непонятно как.
эх, ексешничков бы... а то не у всех пуребасик стоит.
Импер, я тоже думаю, что грамотно и по всем правилам оформалять исходник примера, где рассматриваются достаточно продвинутые вещи это лишнее. Любители итак разберутся а нубам нафиг не упала производительность в таких довольно специфических частях, ибо они будут косячить в другом (загружать модели в цикле, создавать камеру в цикле, использовать текстуры 2673 на 3415, и т.д).
Venom, поаккуратней на поворотах, ладно? у каждого может быть свое мнение и считать неадекватным человека только из-за того что его мнение не совпадает с твоим - это имхо невежество как минимум.
Последний раз редактировалось HolyDel, 03.04.2009 в 16:46.
|
(Offline)
|
|
03.04.2009, 16:36
|
#28
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
Сообщение от tormoz
Собстно нормально оформленных тестов не увидел
создай бб-ешник с 2 функциями - проверка стандартны и твоим методом, сделай в цикле вызов проверки достаточное число раз (например 1000), сделай переключение между методами по клавише и вывод результата на экран.
вот это будет корректный тест
|
Надо добавить паузу от 3000 до 10000 мсек (в зависимости от производительности системы в целом, а также настройки - фулскрин\виндовед) перед началом теста в проге. Блитц тормозит в начале (отладчик + прочий стаф). Проверено многократно, после того,как на эту ошибку указал AsmLover (сорри, если ошибка в нике).
Вроде как тут это неговорено.
меня больше смутило это - "$5F3759DF". понятно, что это как то связано с квадратным корнем, но непонятно как.
|
http://en.wikipedia.org/wiki/Fast_inverse_square_root
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
03.04.2009, 18:17
|
#29
|
Оператор ЭВМ
Регистрация: 25.02.2008
Сообщений: 24
Написано 8 полезных сообщений (для 30 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
Сообщение от tormoz
Собстно нормально оформленных тестов не увидел
создай бб-ешник с 2 функциями - проверка стандартны и твоим методом, сделай в цикле вызов проверки достаточное число раз (например 1000), сделай переключение между методами по клавише и вывод результата на экран.
вот это будет корректный тест
и если разница на 1000 вызовов будет менее 1 мс то я считаю что я прав, а ты изобрел очередной велосипед с квадратными колесами
|
А я что привел? Может тебе к окулисту сходить, зрение проверить, а?
Вот еще один тест "риалтайм", специально для impersonalis ввел константы с понятными именами, а так-же прокомментировал (а то может по названиям непонятно *ROFL*):
; режим работы экрана
Const SCREEN_MODE% = 0
; разрешение экрана
Const SCREEN_WIDTH% = 800
Const SCREEN_HEIGHT% = 600
; центр экрана
Const SCREEN_X_CENTER% = SCREEN_WIDTH / 2
Const SCREEN_Y_CENTER% = SCREEN_HEIGHT / 2
; сдвиг наблюдаемого обьекта по оси Z от камеры
Const ENTITY_Z_OFFSET_FROM_CAMERA# = 5.0
; полный угол в градусах
Const FULL_CIRCLE_IN_DEGREES# = 360.0
; обратная величина полного угла в градусах
Const INVERSE_FULL_CIRCLE_IN_DEGREES# = 1.0 / FULL_CIRCLE_IN_DEGREES
; резкость управления мышью
Const MOUSE_X_SENSITIVITY# = 0.25
Const MOUSE_Y_SENSITIVITY# = 0.25
; ограничение угла обзора камеры по оси ординат
Const CAMERA_PITCH_THRESHOLD# = 85.0
; скорость движения камеры вперед\назад
Const CAMERA_FORWARD_VELOCITY# = 0.05
Const CAMERA_BACKWARD_VELOCITY# = -0.05
; половина угла и дистанция обзора камеры для стандартного метода
Const HALF_FIELD_OF_VIEW_FOR_STANDART_TEST# = 25.0
Const DISTANCE_OF_VIEW_FOR_STANDART_TEST# = 10.0
; половина угла и дистанция обзора камеры для собственного метода
Const HALF_FIELD_OF_VIEW_FOR_CUSTOM_TEST# = 0.906308 ;Cos(HALF_FIELD_OF_VIEW_FOR_STANDART_TEST)
Const DISTANCE_OF_VIEW_FOR_CUSTOM_TEST# = 100.0 ;DISTANCE_OF_VIEW_FOR_STANDART_TEST ^ 2
; кол-во итераций
Const ITERATION_QUANTITY% = 1000
Local xang#, yang#
Local from%, what%
Local frames%, timer%, fps%
Local method%, count%, result%
Graphics3D(SCREEN_WIDTH, SCREEN_HEIGHT, 0, SCREEN_MODE)
SetBuffer(BackBuffer())
;Наблюдаемый обьект
what = CreateSphere()
PositionEntity(what, 0.0, 0.0, ENTITY_Z_OFFSET_FROM_CAMERA)
;Наблюдающий обьект
from = CreateCamera()
CameraZoom(from, 1.0 / Tan(HALF_FIELD_OF_VIEW_FOR_STANDART_TEST))
CameraRange(from, 1.0, DISTANCE_OF_VIEW_FOR_STANDART_TEST)
MoveMouse(SCREEN_X_CENTER, SCREEN_Y_CENTER)
Repeat
; -----------------------------------------------------
; Управление камерой
; -----------------------------------------------------
xang = xang - MouseXSpeed() * MOUSE_X_SENSITIVITY
yang = yang + MouseYSpeed() * MOUSE_Y_SENSITIVITY
MoveMouse(SCREEN_X_CENTER, SCREEN_Y_CENTER)
; модуль для чисел с плавающей запятой
xang = xang - Int(xang * INVERSE_FULL_CIRCLE_IN_DEGREES) * FULL_CIRCLE_IN_DEGREES
; ограничиваем отрицательное значение угла по оси абсцисс
If (xang < 0.0) Then
xang = FULL_CIRCLE_IN_DEGREES + xang
EndIf
; impersonalis ты доволен? *ROFL*
If (Abs(yang) > CAMERA_PITCH_THRESHOLD) Then
yang = Sgn(yang) * CAMERA_PITCH_THRESHOLD
EndIf
RotateEntity(from, yang, xang, 0.0)
If (KeyDown(200)) Then
MoveEntity(from, 0.0, 0.0, CAMERA_FORWARD_VELOCITY)
EndIf
If (KeyDown(208)) Then
MoveEntity(from, 0.0, 0.0, CAMERA_BACKWARD_VELOCITY)
EndIf
; -----------------------------------------------------
RenderWorld()
If (KeyHit(57)) Then
method = 1 Xor method
EndIf
If (method = 0)
Text(10, 10, "Стандартный метод")
For count = 1 To ITERATION_QUANTITY
result = StandartTest(from, what, DISTANCE_OF_VIEW_FOR_STANDART_TEST, HALF_FIELD_OF_VIEW_FOR_STANDART_TEST)
Next
EndIf
If (method = 1)
Text(10, 10, "Собственный метод")
For count = 1 To ITERATION_QUANTITY
result = CustomTest(from, what, DISTANCE_OF_VIEW_FOR_CUSTOM_TEST, HALF_FIELD_OF_VIEW_FOR_CUSTOM_TEST)
Next
EndIf
Text(10, 20, Str(fps))
If (result) Then
Text(10, 30, "Обьект в поле зрения")
EndIf
Flip(False)
; -----------------------------------------------------
; Счетчик кол-ва кадров в секунду
; -----------------------------------------------------
frames = frames + 1
If (MilliSecs() > timer) Then
fps = frames
frames = 0
timer = MilliSecs() + 999
EndIf
; -----------------------------------------------------
Until (KeyDown(1))
End
; -------------------------
; Стандартный метод
; -------------------------
Function StandartTest%(from%, what%, dist#, view#)
If (EntityDistance(from, what) < dist) Then
If ((Abs(DeltaYaw(from, what)) < view) And (Abs(DeltaPitch(from, what)) < view)) Then
Return True
EndIf
EndIf
Return False
End Function
; -------------------------
; Собственный метод
; -------------------------
Function CustomTest%(from%, what%, dist#, view#)
Local xsub#, ysub#, zsub#, temp#
xsub = EntityX(what) - EntityX(from)
ysub = EntityY(what) - EntityY(from)
zsub = EntityZ(what) - EntityZ(from)
temp = xsub * xsub + ysub * ysub + zsub * zsub
If (temp < dist) Then
temp = 1.0 / Sqr(temp)
xsub = xsub * temp
ysub = ysub * temp
zsub = zsub * temp
temp = xsub * GetMatElement(from, 2, 0) + ysub * GetMatElement(from, 2, 1) + zsub * GetMatElement(from, 2, 2)
If (temp > view) Then
Return True
EndIf
EndIf
Return False
End Function
ЗЫ
Хочу заметить что стандартным методом получается прямоугольное поле обзора (четырехугольная пирамида, из-за раздельной проверки по осям), а собственным методом конус, что имхо лучше для данной задачи.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Venom за это полезное сообщение:
|
|
03.04.2009, 18:28
|
#30
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Памагитяяяяяяяяяя...
стандартный 35-37
свой - 62
это на 100000 итераций.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:34.
|