Суть вопроса такая, есть в библиотеках ДГУИ полезная функция:
method Win2World takes real X, real Y, real Range returns VECTOR3
Переводит относительные оконые координаты (от -1 до +1), в мировые, результирующая точка будет расположена на растоянии от камеры равном Range
В ренж нужно передать растояние от камеры до проекции этой точки на террейн, и вопрос заключается в том каким способом лучше найти это пересечение, пока есть вараинт перебора циклом с мелким шагом, но мне кажется это не лучшее решение, ведь при огромных расстояних это вызовет высокую нагрузку

а разве мы не задаём его триггерно?
посмотри как это сделано в дгуи
там же пример есть
ну а вообще
GetCameraTargetPositionX/Y/Z()-GetCameraEyePositionX/Y/Z()
это координаты вектора
а потом тупо высчитываем длинну вектора (гуглим вектора или теорему Пифагора)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
а разве мы не задаём его триггерно?
посмотри как это сделано в дгуи
там же пример есть
ну а вообще
GetCameraTargetPositionX/Y/Z()-GetCameraEyePositionX/Y/Z()
это координаты вектора
а потом тупо высчитываем длинну вектора (гуглим вектора или теорему Пифагора)
Принятый ответ
21
Ну это даст расстояние от глаза камеры до цели камеры. Что дальше то? Что толку от длины?
24
Ребята, забудьте о камере вообще, это не суть.
Есть произвольная точка пространства С , через нее проводится вектор, в месте где этот вектор пересекается с ландшафтом будет Х - как ее найти?
Загруженные файлы
28
darkowlom, а зачем тебе точка пересечения с ландшафтом
объясни что хочешь сделать а я подскажу как лучше это сделать
24
nvc123, в широком профиле интересует, без одной конкретной спецификации(она конечно есть, но интересует широкопрофильная реализация)
28
darkowlom, в широком профиле только метод последовательного приближения
тут нужно рассматривать каждый конкретный случай и адаптироваться под него
24
в широком профиле только метод последовательного приближения
Вот это мне и надо было узнать, теперь вопрос об оптимизации перебора, скорее всего буду использовать разбиение вектора на участки и проверку в сторону уменьшения, если на участке есть пересечение. Это позволит сразу отсеять половину карты и оставшийся участок делить на две части пока не получится минимальный отрезок на котором есть пересечение и его перебирать более детально. Тем более это поможет избежать лишних переборов если пересечения не существует вообще
28
Вот это мне и надо было узнать, теперь вопрос об оптимизации перебора, скорее всего буду использовать разбиение вектора на участки и проверку в сторону уменьшения, если на участке есть пересечение. Это позволит сразу отсеять половину карты и оставшийся участок делить на две части пока не получится минимальный отрезок на котором есть пересечение и его перебирать более детально. Тем более это поможет избежать лишних переборов если пересечения не существует вообще
бред
берёшь каждый конкретный случай и юзаешь подходящее решение
нафиг обобщать то что обобщить невозможно
24
nvc123, конкретный случай- проекция точки экрана на террейн по вектору. В нормальных средах можно запустить рейтрейс по вектору до первого пересечения, но тут мы не можем получить матрицу объекта и придется фактически делать рейтрес именно перебором, другого решения я не вижу.
28
darkowlom, раз ты курил дгуи могу предположить что вектор равен вектору камеры
тогда всё намного проще ибо у нас есть точка отсчёта (цель камеры)
я прав?
24
точку отсчета мы имеем, да , вектор только равен не вектору камеры, а вектору поля зрения относительно точки экрана. Но мне не нужно находить вектор, я имею две точки, спроецировав клик через функцию дгуи на два разных расстояния и могу найти нужный вектор. Осталось найти пересечение этого вектора с ландшафтом
Итого у нас есть: вектор и точка отсчета
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.