Страница 1 из 1

Определить видимость точки на по-ти Земли

Добавлено: 31 мар 2010, 22:06
Shasoft
Делаю 3D карту.
Есть точка над поверхностью Земли (позиция камеры) и точка на поверхности Земли. Нужно определить: видно ли из позиции камеры заданную точку?
По ГИС я не специалист, поэтому прежде чем заниматься геометрией, решил здесь спросить. Может уже есть простые и быстрые формулы для моей задачи?

Re: Определить видимость точки на по-ти Земли

Добавлено: 01 апр 2010, 01:17
Boris
есть. для этого надо построить профиль в выбранном направлении. после этого задача сведется к поиску точки пересечения между линией и набором прямоугольных трапеций.

Re: Определить видимость точки на по-ти Земли

Добавлено: 01 апр 2010, 08:18
Shasoft
Ничего не понял из ответа. :shock:

Я придумал следующее. На рисунке красная точка - это заданная точка, которую нужно проверить на видимость, синяя точка - позиция камеры. Строим два вектора A и B. Определяем угол u. Если угол меньше 90 градусов, то точка видима.Изображение

Re: Определить видимость точки на по-ти Земли

Добавлено: 01 апр 2010, 11:28
Александр Мурый
По сути, задача называется "Line-of-sight", так?
Насколько я понял, можно решить в GRASS GIS с помощью модуля r.los.
http://grass.itc.it/grass64/manuals/htm ... r.los.html

Нужно:
- импортировать в GRASS цифовую модель рельефа (r.in.gdal)
- импортировать из шейп-файла (или в чем оно у вас) точки, для которых нужно выяснить их "видимость"
- надо знать координаты точки камеры и ее высоту над уровнем моря
- используем модуль r.los, как сказано в документации выше.
- создается растровый файл с раскраской по вертик. углу обзора
- смотрите, куда попадает ваша точка

Пример из мануала (крестик -- башня высотой 50 м, цветом на растре -- вертикальный угол обзора, конкретных точек здесь нет;)
2010-04-01-042441_1400x1050_scrot.png
2010-04-01-042441_1400x1050_scrot.png (586.36 КБ) 7807 просмотров
P.S. Если решитесь делать в GRASS, ищите здесь на сайте статьи про ее использование.

Re: Определить видимость точки на по-ти Земли

Добавлено: 01 апр 2010, 11:46
self-improving
Аналогичный вариант - в ArcGIS (в справке - 1, 2, 3, 4)
Но, возможно, если вы в принципе с ГИСами не общаетесь, то логичнее будет все же решать геометрически.
Но это уже вам лучше знать - исходя из задач, условий, нюансов и пр. :)

Re: Определить видимость точки на по-ти Земли

Добавлено: 01 апр 2010, 12:19
Александр Мурый
В принципе, можете выложить сюда данные. Подумаем вместе, а то долго можно рассуждать без конкретики...

Re: Определить видимость точки на по-ти Земли

Добавлено: 01 апр 2010, 12:40
Shasoft
Судя по всему я просто не выдал всю конкретную задачу.
На самом деле задача намного проще, чем ответы, которые тут написали.
Я делаю 3D карту. Земной шар представляется тайлами с объектами. Каждый тайл - это один НЕДЕЛИМЫЙ объект. Мне нужно определить: какие тайлы следует выводить для текущего положения камеры. Алгоритм я описал выше.
Заданная точка - это средняя точка тайла. Так что как я понял, самый лучший вариант - это через геометрию и мой алгоритм.

Re: Определить видимость точки на по-ти Земли

Добавлено: 01 апр 2010, 14:05
alexandr cherepanov
Вообще вам походу хватит расчета видимого горизонта :P

Re: Определить видимость точки на по-ти Земли

Добавлено: 01 апр 2010, 14:10
Shasoft
Во! Именно на такой ответ я и надеялся. :)