www.map-info.ru :: Просмотр темы - углы и гориз. проложения
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
самалёт



Зарегистрирован: 14.11.2007
Сообщения: 8

СообщениеДобавлено: Ср Ноя 14, 2007 1:54 pm    Заголовок сообщения: углы и гориз. проложения Добавить ответ со ссылкой на данный текст

Здрасьти.
такой вопрос. пишу довольно банальную програмку для оформления отчетов. Значит в отчете должны отображаца ,кроме собсно изображения самого объекта, координаты объекта (полигон 4 и более точек) и углы и длинны линий(горизонтальные проложения). Если с координатами никаких проблем нет(узвлекаю функцией NodeX, NodeY)(вроде так)), а как извлечь углы и длинны линий? неужто только путем решения обратной геодезической задачи? бррр.
_________________
кхе кхе... так и будет
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
fursov



Зарегистрирован: 19.03.2007
Сообщения: 6

СообщениеДобавлено: Чт Ноя 15, 2007 5:54 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Странно, зачем в отчёте длины и углы, если есть координаты узлов полигона? А проблема решается по арифметике пупкина: расстояние между узлами = корень квадратный из суммы квадратов разностей соответствующих координат, а о косинусе угола между двумя векторами даже писать смешно. (см. справочник по высшей математике )
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
самалёт



Зарегистрирован: 14.11.2007
Сообщения: 8

СообщениеДобавлено: Пт Ноя 16, 2007 7:28 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Про высшую математику-то понятно, это и есть обратная геодезическая. Я имел в виду есть ли оператор, позволяющий извлечь угол или длинну без таких вот вычислений. Зачем? Ну, например, если тупо лень расписывать формулы.

А углы и линии в отчете вместе с координатами по простой логике действительно не нужны. Но такой утвержденый вид документа. Я тоже спрашивал у начальства, почему нельзя обойтись без них. Ответ был: нельзя и все!
_________________
кхе кхе... так и будет
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Пт Ноя 16, 2007 10:33 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Нет функции, решать самому. Собственно Инструментарий так и делает. Думаю, что на родине MapInfo вообще мало кто слышал про понятие Дирекционного угла, поэтому в Mapinfo и нет такой функции. А длина есть - Distance
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
самалёт



Зарегистрирован: 14.11.2007
Сообщения: 8

СообщениеДобавлено: Пт Ноя 16, 2007 10:47 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Спасибо. Углы придется всетаки вычислять.
_________________
кхе кхе... так и будет
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
SteFF



Зарегистрирован: 08.10.2009
Сообщения: 1

СообщениеДобавлено: Чт Окт 08, 2009 5:49 pm    Заголовок сообщения: 2самалёт Добавить ответ со ссылкой на данный текст

Так как с проблемой вычисления углов и расстояний по координатам? Просто я не владею MapBasic'ом, и мне нужна одна-единственная утилитка для вычисления румбов поворотных точек полилинии (углы и расстояния до следующей точки). ИДМ конечно хорош, но дороговато, притом что мне нужна всего одна функция. В просторах интернета есть утилитки для дирекционных углов, но там линию нужно рисовать самому.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Nick4



Зарегистрирован: 15.10.2011
Сообщения: 95

СообщениеДобавлено: Пт Июл 14, 2017 2:26 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

function ugol(Byval x as float,byval x1 as float,byval y as float,byval y1 as float) as float ' возвращает угол линии в радианах относительно севера
dim ugl as float

if x=x1 then

if y1>y then
ugl=90*DEG_2_RAD
else

ugl=270*DEG_2_RAD
end if
else
ugl=atn( abs((y1-y)) / (abs(x1-x)) )
if y<=y1 and x>x1 then
ugl=180*DEG_2_RAD-ugl
end if
if y>y1 and x>x1 then
ugl=180*DEG_2_RAD+ugl
end if
if y>y1 and x<x1 then
ugl=360*DEG_2_RAD-ugl
end if
end if
ugol=ugl
end function

function ugol_line(Byval ug1 as float,byval ug2 as float) as float ' возвращает внутренний угол в радианах между линиями, ug1,ug2 - углы линий
dim perm as float
perm=ug2-ug1
if abs(perm)>180*DEG_2_RAD then
ugol_line=(ug2-ug1)-360*DEG_2_RAD*perm/abs(perm)
else
ugol_line=ug2-ug1
end if
end function

Первой функцией вычисляем углы каждой линии. Второй функцией получаем угол между линиями.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru